< 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 >