< prev index next >

src/hotspot/share/opto/macro.cpp

Print this page

        

*** 859,870 **** res_type = _igvn.type(res)->isa_oopptr(); } if (res != NULL) { klass = res_type->klass(); ! // Value types are only allocated on demand ! if (res_type->isa_instptr() || res_type->isa_valuetypeptr()) { // find the fields of the class which will be needed for safepoint debug information assert(klass->is_instance_klass(), "must be an instance klass."); iklass = klass->as_instance_klass(); nfields = iklass->nof_nonstatic_fields(); } else { --- 859,869 ---- res_type = _igvn.type(res)->isa_oopptr(); } if (res != NULL) { klass = res_type->klass(); ! if (res_type->isa_instptr()) { // find the fields of the class which will be needed for safepoint debug information assert(klass->is_instance_klass(), "must be an instance klass."); iklass = klass->as_instance_klass(); nfields = iklass->nof_nonstatic_fields(); } else {
*** 2680,2690 **** void PhaseMacroExpand::expand_mh_intrinsic_return(CallStaticJavaNode* call) { Node* ret = call->proj_out(TypeFunc::Parms); if (ret == NULL) { return; } ! assert(ret->bottom_type()->is_valuetypeptr()->is__Value(), "unexpected return type from MH intrinsic"); const TypeFunc* tf = call->_tf; const TypeTuple* domain = OptoRuntime::store_value_type_fields_Type()->domain_cc(); const TypeFunc* new_tf = TypeFunc::make(tf->domain_sig(), tf->domain_cc(), tf->range_sig(), domain); call->_tf = new_tf; // Make sure the change of type is applied before projections are --- 2679,2690 ---- void PhaseMacroExpand::expand_mh_intrinsic_return(CallStaticJavaNode* call) { Node* ret = call->proj_out(TypeFunc::Parms); if (ret == NULL) { return; } ! // TODO fix this with the calling convention changes ! //assert(ret->bottom_type()->is_valuetypeptr()->is__Value(), "unexpected return type from MH intrinsic"); const TypeFunc* tf = call->_tf; const TypeTuple* domain = OptoRuntime::store_value_type_fields_Type()->domain_cc(); const TypeFunc* new_tf = TypeFunc::make(tf->domain_sig(), tf->domain_cc(), tf->range_sig(), domain); call->_tf = new_tf; // Make sure the change of type is applied before projections are
*** 2711,2721 **** IfNode* allocation_iff = new IfNode(ctl, bol, PROB_MAX, COUNT_UNKNOWN); transform_later(allocation_iff); Node* allocation_ctl = transform_later(new IfTrueNode(allocation_iff)); Node* no_allocation_ctl = transform_later(new IfFalseNode(allocation_iff)); ! Node* no_allocation_res = transform_later(new CheckCastPPNode(no_allocation_ctl, res, TypeValueTypePtr::NOTNULL)); Node* mask2 = MakeConX(-2); Node* masked2 = transform_later(new AndXNode(cast, mask2)); Node* rawklassptr = transform_later(new CastX2PNode(masked2)); Node* klass_node = transform_later(new CheckCastPPNode(allocation_ctl, rawklassptr, TypeKlassPtr::OBJECT_OR_NULL)); --- 2711,2721 ---- IfNode* allocation_iff = new IfNode(ctl, bol, PROB_MAX, COUNT_UNKNOWN); transform_later(allocation_iff); Node* allocation_ctl = transform_later(new IfTrueNode(allocation_iff)); Node* no_allocation_ctl = transform_later(new IfFalseNode(allocation_iff)); ! Node* no_allocation_res = transform_later(new CheckCastPPNode(no_allocation_ctl, res, TypeInstPtr::NOTNULL)); Node* mask2 = MakeConX(-2); Node* masked2 = transform_later(new AndXNode(cast, mask2)); Node* rawklassptr = transform_later(new CastX2PNode(masked2)); Node* klass_node = transform_later(new CheckCastPPNode(allocation_ctl, rawklassptr, TypeKlassPtr::OBJECT_OR_NULL));
< prev index next >