< prev index next >

src/share/vm/opto/callGenerator.cpp

Print this page

        

@@ -494,15 +494,16 @@
   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 = result->as_ValueType()->allocate(&kit);
+        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)
-        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++) {
< prev index next >