--- old/src/hotspot/cpu/x86/interpreterRT_x86_32.cpp 2019-03-11 14:24:54.978356139 +0100 +++ new/src/hotspot/cpu/x86/interpreterRT_x86_32.cpp 2019-03-11 14:24:54.774356142 +0100 @@ -72,6 +72,10 @@ box (offset(), jni_offset() + 1); } +void InterpreterRuntime::SignatureHandlerGenerator::pass_valuetype() { + box (offset(), jni_offset() + 1); +} + void InterpreterRuntime::SignatureHandlerGenerator::move(int from_offset, int to_offset) { __ movl(temp(), Address(from(), Interpreter::local_offset_in_bytes(from_offset))); __ movl(Address(to(), to_offset * wordSize), temp()); @@ -136,6 +140,13 @@ // pass address of from intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0)); *_to++ = (*(intptr_t*)from_addr == 0) ? NULL_WORD : from_addr; + _from -= Interpreter::stackElementSize; + } + + virtual void pass_valuetype() { + // pass address of from + intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0)); + *_to++ = (*(intptr_t*)from_addr == 0) ? NULL_WORD : from_addr; _from -= Interpreter::stackElementSize; }