< prev index next >
src/hotspot/share/opto/parse1.cpp
Print this page
@@ -2375,24 +2375,18 @@
// Handle exact value type to Object return
assert(tr->isa_instptr()->klass()->is_java_lang_Object(), "must be java.lang.Object");
ValueTypeNode* vt = value->as_ValueType()->allocate(this)->as_ValueType();
value = ValueTypePtrNode::make_from_value_type(_gvn, vt);
} else if (phi->bottom_type()->isa_valuetype() && !value->is_ValueType()) {
- Node* null_ctl = top();
- Node* not_null_obj = null_check_common(value, T_VALUETYPE, false, &null_ctl, false);
- if (null_ctl != top()) {
- // TODO For now, we just deoptimize if value type is NULL
- PreserveJVMState pjvms(this);
- set_control(null_ctl);
- replace_in_map(value, null());
+ if (_gvn.type(value)->is_zero_type()) {
inc_sp(1);
+ // TODO For now, we just deoptimize if value type is NULL
uncommon_trap(Deoptimization::Reason_null_check, Deoptimization::Action_none);
- }
- if (stopped()) {
- value = null();
+ dec_sp(1);
+ return;
} else {
- value = ValueTypeNode::make_from_oop(this, not_null_obj, phi->bottom_type()->isa_valuetype()->value_klass());
+ value = ValueTypeNode::make_from_oop(this, value, phi->bottom_type()->isa_valuetype()->value_klass());
}
} else {
// Handle returns of oop-arrays to an arrays-of-interface return
const TypeInstPtr* phi_tip;
const TypeInstPtr* val_tip;
< prev index next >