< 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 >