< prev index next >

src/share/vm/opto/graphKit.cpp

Print this page

        

*** 1510,1520 **** 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); } pre_barrier(true /* do_load */, control(), obj, adr, adr_idx, val, val_type, NULL /* pre_val */, --- 1510,1520 ---- 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()->allocate(this); } pre_barrier(true /* do_load */, control(), obj, adr, adr_idx, val, val_type, NULL /* pre_val */,
*** 1608,1618 **** 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); 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(). --- 1608,1618 ---- 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()->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,1633 **** idx++; } } else { if (arg->is_ValueType()) { // Pass value type argument via oop to callee ! arg = arg->as_ValueType()->store_to_memory(this); } call->init_req(i, arg); } } } --- 1623,1633 ---- idx++; } } else { if (arg->is_ValueType()) { // Pass value type argument via oop to callee ! arg = arg->as_ValueType()->allocate(this); } call->init_req(i, arg); } } }
*** 3341,3351 **** // - 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) { // 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; --- 3341,3352 ---- // - 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, ! 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,3416 **** 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); return set_output_for_allocation(alloc, oop_type, deoptimize_on_exception); } //-------------------------------new_array------------------------------------- --- 3407,3417 ---- 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, value_node); return set_output_for_allocation(alloc, oop_type, deoptimize_on_exception); } //-------------------------------new_array-------------------------------------
*** 3637,3647 **** 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); length = SubI(length, intcon(1)); add_predicate(nargs); RegionNode* loop = new RegionNode(3); loop->init_req(1, control()); --- 3638,3648 ---- 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()->allocate(this); length = SubI(length, intcon(1)); add_predicate(nargs); RegionNode* loop = new RegionNode(3); loop->init_req(1, control());
< prev index next >