0

Below is the assembly code dump output from JIT C2. It performs a func call (callq), but in the comment section, JIT outputs a call stack. Does this imply inline is only applied up to SomeClass::SomeMethod? Thanks for the answering.

0x00007f4a9f4f269f: callq  0x00007f4a9d0453e0  ; OopMap{rbp=Oop [288]=Oop [312]=Oop [112]=Oop [120]=Oop [128]=Oop [136]=Oop [176]=Oop [192]=Oop off=4132}
                                                ;*if_icmpeq
                                                ; - org.apache.spark.xyz.abc.SomeClass::SomeMethod@178 (line 87)
                                                ; - org.apache.spark.abc.xyz.OtherClass::OtherMethod@575 (line 561)
                                                ;   {runtime_call}
Bostonian
  • 615
  • 7
  • 16

1 Answers1

1

The comments show the current inlining stack corresponding to the given machine instruction.

;*if_icmpeq
; - org.apache.spark.xyz.abc.SomeClass::SomeMethod@178 (line 87)
; - org.apache.spark.abc.xyz.OtherClass::OtherMethod@575 (line 561)

In particular, the above comment means that the corresponding call instruction was generated as a result of compiling if_icmpeq bytecode at SomeClass.SomeMethod, which was inlined into the compilation of OtherClass.OtherMethod.

Here OtherClass.OtherMethod is the root method being compiled, and SomeClass.SomeMethod is a method at the first inlining level.

apangin
  • 92,924
  • 10
  • 193
  • 247