--- old/src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp 2017-12-13 15:36:02.908786220 -0500 +++ new/src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp 2017-12-13 15:36:02.640784891 -0500 @@ -256,6 +256,19 @@ // across a GC if there's one. __ super_call_VM_leaf(StubRoutines::store_value_type_fields_to_buf()); __ bind(skip); + + if (ReturnValuesInThreadLocalBuffer) { + // vt_alloc_ptr adjustment + Label no_adjustment; + __ cmpptr(rax, Address(r15_thread, in_bytes(JavaThread::vt_alloc_ptr_offset()))); + __ jcc(Assembler::notEqual, no_adjustment); + __ load_klass(rbx, rax); + __ movl(r13, Address(rbx, Klass::layout_helper_offset())); + __ lea(r14, Address(rax, r13, Address::times_1)); + __ movptr(Address(r15_thread, in_bytes(JavaThread::vt_alloc_ptr_offset())), r14); + __ bind(no_adjustment); + } + #endif }