JVM Interpreter (original) (raw)

Andrew Haley aph at redhat.com
Sun Aug 26 22:07:26 UTC 2018


On 08/25/2018 07:39 PM, mr rupplin wrote:

I am presuming the JVM interpreter is defined/implemented in the the hotspot module since this is a JVM implementation.

That's right.

I cannot seem to find any instruction in it that gets called by a simple "./java -ea Class" call. We are stumped.

On the "teach a man to fish" priniple, here goes. On most systems the interpreter is written in assembly language and generated at runtime.

Put a GDB breakpoint here in javaCalls.cpp::

  StubRoutines::call_stub()(
    (address)&link,
    // (intptr_t*)&(result->_value), // see NOTE above (compiler problem)
    result_val_address,          // see NOTE above (compiler problem)
    result_type,
    method(),
    entry_point,
    args->parameters(),
    args->size_of_parameters(),
    CHECK
  );

Step in from the call stub. You'll need to use "si" rather than "step", because this is not C++, it's pure hand-crafted assembly language: the real thing. You'll see the registers saved, the parameters copied into the interpreter stack, and the interpreter entered.

-- Andrew Haley Java Platform Lead Engineer Red Hat UK Ltd. <https://www.redhat.com> EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671



More information about the core-libs-dev mailing list