< prev index next >

src/hotspot/cpu/ppc/methodHandles_ppc.cpp

Print this page
@@ -142,11 +142,15 @@
  
    // Compiled case, either static or fall-through from runtime conditional
    __ cmplwi(CR0, R19_method, 0);
    __ beq(CR0, L_no_such_method);
  
-   const ByteSize entry_offset = for_compiler_entry ? Method::from_compiled_offset() :
+   // The following jump might pass an inline type argument that was erased to Object as oop to a
+   // callee that expects inline type arguments to be passed as fields. We need to call the compiled
+   // value entry (_code->inline_entry_point() or _adapter->c2i_inline_entry()) which will take care
+   // of translating between the calling conventions.
+   const ByteSize entry_offset = for_compiler_entry ? Method::from_compiled_inline_offset() :
                                                       Method::from_interpreted_offset();
    __ ld(target, in_bytes(entry_offset), R19_method);
    __ mtctr(target);
    __ bctr();
  
< prev index next >