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