< prev index next >

src/hotspot/share/runtime/javaCalls.cpp

Print this page

        

@@ -447,10 +447,19 @@
       THROW(vmSymbols::jdk_vm_ci_code_InvalidInstalledCodeException());
     }
   }
 #endif
 
+  Handle vt;
+  if (result->get_type() == T_VALUETYPE) {
+    // Pre allocate buffered value in case the result is returned
+    // flattened by compiled code
+    ValueKlass* vk = method->returned_value_type(thread);
+    vt = vk->allocate_instance_handle(CHECK);
+    result->set_jobject((jobject)vt());
+  }
+
   // do call
   { JavaCallWrapper link(method, receiver, result, CHECK);
     { HandleMark hm(thread);  // HandleMark used by HandleMarkCleaner
 
       StubRoutines::call_stub()(
< prev index next >