< prev index next >
src/share/vm/opto/callGenerator.cpp
Print this page
*** 494,508 ****
C->env()->notice_inlined_method(_inline_cg->method());
C->set_inlining_progress(true);
if (return_type->is_valuetype() && return_type != C->env()->___Value_klass()) {
if (result->is_ValueType()) {
if (!call->tf()->returns_value_type_as_fields()) {
! result = result->as_ValueType()->allocate(&kit);
} else {
// Return of multiple values (the fields of a value type)
- ValueTypeNode* vt = result->as_ValueType();
vt->replace_call_results(call, C);
}
} else {
assert(result->is_top(), "what else?");
for (DUIterator_Fast imax, i = call->fast_outs(imax); i < imax; i++) {
--- 494,509 ----
C->env()->notice_inlined_method(_inline_cg->method());
C->set_inlining_progress(true);
if (return_type->is_valuetype() && return_type != C->env()->___Value_klass()) {
if (result->is_ValueType()) {
+ ValueTypeNode* vt = result->as_ValueType();
if (!call->tf()->returns_value_type_as_fields()) {
! result = vt->allocate(&kit);
! result = C->initial_gvn()->transform(new ValueTypePtrNode(vt, result, C));
} else {
// Return of multiple values (the fields of a value type)
vt->replace_call_results(call, C);
}
} else {
assert(result->is_top(), "what else?");
for (DUIterator_Fast imax, i = call->fast_outs(imax); i < imax; i++) {
< prev index next >