< prev index next >

src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp

Print this page

        

@@ -201,10 +201,17 @@
   // Restore stack bottom in case i2c adjusted stack
   __ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize));
   // and NULL it as marker that esp is now tos until next java call
   __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
 
+  if (state == qtos && ValueTypeReturnedAsFields) {
+    // A value type is being returned. If fields are in registers we
+    // need to allocate a value type instance and initialize it with
+    // the value of the fields.
+    __ super_call_VM_leaf(StubRoutines::store_value_type_fields_to_buf());
+  }
+
   __ restore_bcp();
   __ restore_locals();
 
   if (state == atos) {
     Register mdp = rbx;
< prev index next >