--- old/src/hotspot/cpu/x86/methodHandles_x86.cpp 2019-03-11 14:24:56.670356116 +0100 +++ new/src/hotspot/cpu/x86/methodHandles_x86.cpp 2019-03-11 14:24:56.466356119 +0100 @@ -147,7 +147,11 @@ __ BIND(run_compiled_code); } - const ByteSize entry_offset = for_compiler_entry ? Method::from_compiled_offset() : + // The following jump might pass a value type argument that was erased to Object as oop to a + // callee that expects value type arguments to be passed as fields. We need to call the compiled + // value entry (_code->value_entry_point() or _adapter->c2i_value_entry()) which will take care + // of translating between the calling conventions. + const ByteSize entry_offset = for_compiler_entry ? Method::from_compiled_value_offset() : Method::from_interpreted_offset(); __ jmp(Address(method, entry_offset));