--- old/src/share/vm/opto/graphKit.cpp 2017-06-26 12:50:29.919902964 +0200 +++ new/src/share/vm/opto/graphKit.cpp 2017-06-26 12:50:29.827902969 +0200 @@ -1512,7 +1512,7 @@ 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 */, @@ -1610,7 +1610,7 @@ // 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++; } @@ -1625,7 +1625,7 @@ } 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); } @@ -3343,7 +3343,8 @@ 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. @@ -3408,7 +3409,7 @@ 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); } @@ -3639,7 +3640,7 @@ 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);