< prev index next >
src/hotspot/share/opto/parse1.cpp
Print this page
*** 126,136 ****
case T_OBJECT: l = new LoadPNode(ctl, mem, adr, TypeRawPtr::BOTTOM, TypeInstPtr::BOTTOM, MemNode::unordered); break;
case T_VALUETYPE: {
// Load oop and create a new ValueTypeNode
const TypeInstPtr* ptr_type = TypeInstPtr::make(TypePtr::BotPTR, type->is_valuetype()->value_klass());
l = _gvn.transform(new LoadPNode(ctl, mem, adr, TypeRawPtr::BOTTOM, ptr_type, MemNode::unordered));
! l = ValueTypeNode::make_from_oop(this, l, type->is_valuetype()->value_klass(), /* buffer_check */ true, /* null2default */ false);
break;
}
case T_LONG:
case T_DOUBLE: {
// Since arguments are in reverse order, the argument address 'adr'
--- 126,136 ----
case T_OBJECT: l = new LoadPNode(ctl, mem, adr, TypeRawPtr::BOTTOM, TypeInstPtr::BOTTOM, MemNode::unordered); break;
case T_VALUETYPE: {
// Load oop and create a new ValueTypeNode
const TypeInstPtr* ptr_type = TypeInstPtr::make(TypePtr::BotPTR, type->is_valuetype()->value_klass());
l = _gvn.transform(new LoadPNode(ctl, mem, adr, TypeRawPtr::BOTTOM, ptr_type, MemNode::unordered));
! l = ValueTypeNode::make_from_oop(this, l, type->is_valuetype()->value_klass(), /* null2default */ false);
break;
}
case T_LONG:
case T_DOUBLE: {
// Since arguments are in reverse order, the argument address 'adr'
*** 608,618 ****
const Type* t = _gvn.type(parm);
if (!ValueTypePassFieldsAsArgs) {
if (t->is_valuetypeptr()) {
// Create ValueTypeNode from the oop and replace the parameter
assert(!t->is_ptr()->maybe_null(), "value type arguments should never be null");
! Node* vt = ValueTypeNode::make_from_oop(this, parm, t->value_klass(), /* buffer_check */ true, /* null2default */ false);
map()->replace_edge(parm, vt);
}
} else {
assert(false, "FIXME");
// TODO move the code from build_start_state and do_late_inline here
--- 608,618 ----
const Type* t = _gvn.type(parm);
if (!ValueTypePassFieldsAsArgs) {
if (t->is_valuetypeptr()) {
// Create ValueTypeNode from the oop and replace the parameter
assert(!t->is_ptr()->maybe_null(), "value type arguments should never be null");
! Node* vt = ValueTypeNode::make_from_oop(this, parm, t->value_klass(), /* null2default */ false);
map()->replace_edge(parm, vt);
}
} else {
assert(false, "FIXME");
// TODO move the code from build_start_state and do_late_inline here
< prev index next >