< prev index next >

src/hotspot/share/opto/doCall.cpp

Print this page

        

*** 651,661 **** if (rtype->basic_type() == T_VALUETYPE && !retnode->is_ValueType()) { pop(); assert(!cg->is_inline(), "should have ValueTypeNode result when inlining"); ciValueKlass* vk = _gvn.type(retnode)->value_klass(); // We will deoptimize if the return value is null and then need to continue execution after the call ! ValueTypeNode* vt = ValueTypeNode::make_from_oop(this, retnode, vk, /* buffer_check */ false, /* null2default */ false, iter().next_bci()); push_node(T_VALUETYPE, vt); } if (Bytecodes::has_optional_appendix(iter().cur_bc_raw()) || is_signature_polymorphic) { // Be careful here with return types. --- 651,661 ---- if (rtype->basic_type() == T_VALUETYPE && !retnode->is_ValueType()) { pop(); assert(!cg->is_inline(), "should have ValueTypeNode result when inlining"); ciValueKlass* vk = _gvn.type(retnode)->value_klass(); // We will deoptimize if the return value is null and then need to continue execution after the call ! ValueTypeNode* vt = ValueTypeNode::make_from_oop(this, retnode, vk, /* null2default */ false, iter().next_bci()); push_node(T_VALUETYPE, vt); } if (Bytecodes::has_optional_appendix(iter().cur_bc_raw()) || is_signature_polymorphic) { // Be careful here with return types.
*** 684,694 **** if (arg_type != NULL && !arg_type->higher_equal(sig_type) && !retnode->is_ValueType()) { pop(); Node* cast_obj = _gvn.transform(new CheckCastPPNode(control(), retnode, sig_type)); if (ct == T_VALUETYPE) { // We will deoptimize if the return value is null and then need to continue execution after the call ! cast_obj = ValueTypeNode::make_from_oop(this, cast_obj, ctype->as_value_klass(), /* buffer_check */ false, /* null2default */ false, iter().next_bci()); } push(cast_obj); } } } else { --- 684,694 ---- if (arg_type != NULL && !arg_type->higher_equal(sig_type) && !retnode->is_ValueType()) { pop(); Node* cast_obj = _gvn.transform(new CheckCastPPNode(control(), retnode, sig_type)); if (ct == T_VALUETYPE) { // We will deoptimize if the return value is null and then need to continue execution after the call ! cast_obj = ValueTypeNode::make_from_oop(this, cast_obj, ctype->as_value_klass(), /* null2default */ false, iter().next_bci()); } push(cast_obj); } } } else {
< prev index next >