< prev index next >

src/hotspot/share/opto/parse1.cpp

Print this page

        

*** 155,165 **** Node* Parse::check_interpreter_type(Node* l, const Type* type, SafePointNode* &bad_type_exit) { const TypeOopPtr* tp = type->isa_oopptr(); if (type->isa_valuetype() != NULL) { // The interpreter passes value types as oops ! tp = TypeOopPtr::make_from_klass(type->isa_valuetype()->value_klass()); tp = tp->join_speculative(TypePtr::NOTNULL)->is_oopptr(); } // TypeFlow may assert null-ness if a type appears unloaded. if (type == TypePtr::NULL_PTR || --- 155,165 ---- Node* Parse::check_interpreter_type(Node* l, const Type* type, SafePointNode* &bad_type_exit) { const TypeOopPtr* tp = type->isa_oopptr(); if (type->isa_valuetype() != NULL) { // The interpreter passes value types as oops ! tp = TypeOopPtr::make_from_klass(type->value_klass()); tp = tp->join_speculative(TypePtr::NOTNULL)->is_oopptr(); } // TypeFlow may assert null-ness if a type appears unloaded. if (type == TypePtr::NULL_PTR ||
*** 925,935 **** if (vt->is_allocated(&kit.gvn()) && !StressValueTypeReturnedAsFields) { ret->init_req(TypeFunc::Parms, vt->get_oop()); } else { ret->init_req(TypeFunc::Parms, vt->tagged_klass(kit.gvn())); } ! const Array<SigEntry>* sig_array = vt->type()->is_valuetype()->value_klass()->extended_sig(); GrowableArray<SigEntry> sig = GrowableArray<SigEntry>(sig_array->length()); sig.appendAll(sig_array); ExtendedSignature sig_cc = ExtendedSignature(&sig, SigEntryFilter()); uint idx = TypeFunc::Parms+1; vt->pass_fields(&kit, ret, sig_cc, idx); --- 925,935 ---- if (vt->is_allocated(&kit.gvn()) && !StressValueTypeReturnedAsFields) { ret->init_req(TypeFunc::Parms, vt->get_oop()); } else { ret->init_req(TypeFunc::Parms, vt->tagged_klass(kit.gvn())); } ! const Array<SigEntry>* sig_array = vt->type()->value_klass()->extended_sig(); GrowableArray<SigEntry> sig = GrowableArray<SigEntry>(sig_array->length()); sig.appendAll(sig_array); ExtendedSignature sig_cc = ExtendedSignature(&sig, SigEntryFilter()); uint idx = TypeFunc::Parms+1; vt->pass_fields(&kit, ret, sig_cc, idx);
*** 2325,2335 **** const Type* return_type = phi->bottom_type(); const TypeOopPtr* tr = return_type->isa_oopptr(); if (return_type->isa_valuetype()) { // Value type is returned as fields, make sure it is scalarized if (!value->is_ValueType()) { ! value = ValueTypeNode::make_from_oop(this, value, return_type->is_valuetype()->value_klass()); } if (!_caller->has_method()) { // Value type is returned as fields from root method, make // sure all non-flattened value type fields are allocated. assert(tf()->returns_value_type_as_fields(), "must be returned as fields"); --- 2325,2335 ---- const Type* return_type = phi->bottom_type(); const TypeOopPtr* tr = return_type->isa_oopptr(); if (return_type->isa_valuetype()) { // Value type is returned as fields, make sure it is scalarized if (!value->is_ValueType()) { ! value = ValueTypeNode::make_from_oop(this, value, return_type->value_klass()); } if (!_caller->has_method()) { // Value type is returned as fields from root method, make // sure all non-flattened value type fields are allocated. assert(tf()->returns_value_type_as_fields(), "must be returned as fields");
< prev index next >