< prev index next >

src/share/vm/opto/graphKit.cpp

Print this page

        

*** 1679,1689 **** // ValueType node, each field is a projection from the call. const TypeTuple *range_sig = call->tf()->range_sig(); const Type* t = range_sig->field_at(TypeFunc::Parms); assert(t->isa_valuetypeptr(), "only value types for multiple return values"); ciValueKlass* vk = t->is_valuetypeptr()->value_type()->value_klass(); ! ret = C->create_vt_node(call, vk, vk, 0, TypeFunc::Parms+1, false); } } // Note: Since any out-of-line call can produce an exception, // we always insert an I_O projection from the call into the result. --- 1679,1689 ---- // ValueType node, each field is a projection from the call. const TypeTuple *range_sig = call->tf()->range_sig(); const Type* t = range_sig->field_at(TypeFunc::Parms); assert(t->isa_valuetypeptr(), "only value types for multiple return values"); ciValueKlass* vk = t->is_valuetypeptr()->value_type()->value_klass(); ! ret = ValueTypeNode::make(_gvn, call, vk, TypeFunc::Parms+1, false); } } // Note: Since any out-of-line call can produce an exception, // we always insert an I_O projection from the call into the result.
*** 3351,3361 **** // The size is always an integral number of doublewords, represented // as a positive bytewise size stored in the klass's layout_helper. // The layout_helper also encodes (in a low bit) the need for a slow path. jint layout_con = Klass::_lh_neutral_value; Node* layout_val = get_layout_helper(klass_node, layout_con); ! int layout_is_con = (layout_val == NULL); if (extra_slow_test == NULL) extra_slow_test = intcon(0); // Generate the initial go-slow test. It's either ALWAYS (return a // Node for 1) or NEVER (return a NULL) or perhaps (in the reflective // case) a computed value derived from the layout_helper. --- 3351,3361 ---- // The size is always an integral number of doublewords, represented // as a positive bytewise size stored in the klass's layout_helper. // The layout_helper also encodes (in a low bit) the need for a slow path. jint layout_con = Klass::_lh_neutral_value; Node* layout_val = get_layout_helper(klass_node, layout_con); ! bool layout_is_con = (layout_val == NULL); if (extra_slow_test == NULL) extra_slow_test = intcon(0); // Generate the initial go-slow test. It's either ALWAYS (return a // Node for 1) or NEVER (return a NULL) or perhaps (in the reflective // case) a computed value derived from the layout_helper.
*** 3425,3435 **** int nargs, // number of arguments to push back for uncommon trap Node* *return_size_val, bool deoptimize_on_exception) { jint layout_con = Klass::_lh_neutral_value; Node* layout_val = get_layout_helper(klass_node, layout_con); ! int layout_is_con = (layout_val == NULL); if (!layout_is_con && !StressReflectiveCode && !too_many_traps(Deoptimization::Reason_class_check)) { // This is a reflective array creation site. // Optimistically assume that it is a subtype of Object[], --- 3425,3435 ---- int nargs, // number of arguments to push back for uncommon trap Node* *return_size_val, bool deoptimize_on_exception) { jint layout_con = Klass::_lh_neutral_value; Node* layout_val = get_layout_helper(klass_node, layout_con); ! bool layout_is_con = (layout_val == NULL); if (!layout_is_con && !StressReflectiveCode && !too_many_traps(Deoptimization::Reason_class_check)) { // This is a reflective array creation site. // Optimistically assume that it is a subtype of Object[],
< prev index next >