< prev index next >

src/share/vm/opto/valuetypenode.cpp

Print this page

        

@@ -612,17 +612,20 @@
 bool ValueTypeNode::is_allocated(PhaseGVN* phase) const {
   const Type* oop_type = phase->type(get_oop());
   return oop_type->meet(TypePtr::NULL_PTR) != oop_type;
 }
 
-void ValueTypeNode::pass_klass(Node* n, uint pos, const GraphKit& kit) {
+Node* ValueTypeNode::tagged_klass(PhaseGVN& gvn) {
   ciValueKlass* vk = value_klass();
   const TypeKlassPtr* tk = TypeKlassPtr::make(vk);
   intptr_t bits = tk->get_con();
   set_nth_bit(bits, 0);
-  Node* klass_tagged = kit.MakeConX(bits);
-  n->init_req(pos, klass_tagged);
+  return gvn.makecon(TypeRawPtr::make((address)bits));
+}
+
+void ValueTypeNode::pass_klass(Node* n, uint pos, const GraphKit& kit) {
+  n->init_req(pos, tagged_klass(kit.gvn()));
 }
 
 uint ValueTypeNode::pass_fields(Node* n, int base_input, const GraphKit& kit, ciValueKlass* base_vk, int base_offset) {
   ciValueKlass* vk = value_klass();
   if (base_vk == NULL) {
< prev index next >