< prev index next >

src/share/vm/opto/graphKit.cpp

Print this page

        

@@ -1510,11 +1510,11 @@
   uint adr_idx = C->get_alias_index(adr_type);
   assert(adr_idx != Compile::AliasIdxTop, "use other store_to_memory factory" );
 
   if (bt == T_VALUETYPE) {
     // Allocate value type and store oop
-    val = val->as_ValueType()->store_to_memory(this);
+    val = val->as_ValueType()->allocate(this);
   }
 
   pre_barrier(true /* do_load */,
               control(), obj, adr, adr_idx, val, val_type,
               NULL /* pre_val */,

@@ -1608,11 +1608,11 @@
         if (domain->field_at(i)->is_valuetypeptr()->klass() != C->env()->___Value_klass()) {
           // We don't pass value type arguments by reference but instead
           // pass each field of the value type
           idx += vt->pass_fields(call, idx, *this);
         } else {
-          arg = arg->as_ValueType()->store_to_memory(this);
+          arg = arg->as_ValueType()->allocate(this);
           call->init_req(idx, arg);
           idx++;
         }
         // If a value type argument is passed as fields, attach the Method* to the call site
         // to be able to access the extended signature later via attached_method_before_pc().

@@ -1623,11 +1623,11 @@
         idx++;
       }
     } else {
       if (arg->is_ValueType()) {
         // Pass value type argument via oop to callee
-        arg = arg->as_ValueType()->store_to_memory(this);
+        arg = arg->as_ValueType()->allocate(this);
       }
       call->init_req(i, arg);
     }
   }
 }

@@ -3341,11 +3341,12 @@
 //  - If 'return_size_val', report the the total object size to the caller.
 //  - deoptimize_on_exception controls how Java exceptions are handled (rethrow vs deoptimize)
 Node* GraphKit::new_instance(Node* klass_node,
                              Node* extra_slow_test,
                              Node* *return_size_val,
-                             bool deoptimize_on_exception) {
+                             bool deoptimize_on_exception,
+                             ValueTypeNode* value_node) {
   // Compute size in doublewords
   // The size is always an integral number of doublewords, represented
   // as a positive bytewise size stored in the klass's layout_helper.
   // The layout_helper also encodes (in a low bit) the need for a slow path.
   jint  layout_con = Klass::_lh_neutral_value;

@@ -3406,11 +3407,11 @@
   set_all_memory(mem); // Create new memory state
 
   AllocateNode* alloc = new AllocateNode(C, AllocateNode::alloc_type(Type::TOP),
                                          control(), mem, i_o(),
                                          size, klass_node,
-                                         initial_slow_test);
+                                         initial_slow_test, value_node);
 
   return set_output_for_allocation(alloc, oop_type, deoptimize_on_exception);
 }
 
 //-------------------------------new_array-------------------------------------

@@ -3637,11 +3638,11 @@
   SafePointNode* loop_map = NULL;
   {
     PreserveJVMState pjvms(this);
     // Create default value type and store it to memory
     Node* oop = ValueTypeNode::make_default(gvn(), vk);
-    oop = oop->as_ValueType()->store_to_memory(this);
+    oop = oop->as_ValueType()->allocate(this);
 
     length = SubI(length, intcon(1));
     add_predicate(nargs);
     RegionNode* loop = new RegionNode(3);
     loop->init_req(1, control());
< prev index next >