Question regarding "native-compiled frame"

Felix Yang felix.yang at linaro.org
Wed Sep 6 13:55:52 UTC 2017


Hi,

    Can some help explain what is a so called "native-compiled frame" in
hotspot please?
    This is mentioned in the frame::sender function which is defined in
file frame_x86.cpp:

----------------------------------------------------------------------------------------------------------
  frame frame::sender(RegisterMap* map) const {
      // Default is we done have to follow them. The sender_for_xxx will
      // update it accordingly
      map->set_include_argument_oops(false);

      if (is_entry_frame())       return sender_for_entry_frame(map);
      if (is_interpreted_frame()) return sender_for_interpreter_frame(map);
      assert(_cb == CodeCache::find_blob(pc()),"Must be the same");

      if (_cb != NULL) {
        return sender_for_compiled_frame(map);
      }

      // Must be native-compiled frame, i.e. the marshaling code for native
      // methods that exists in the core system.
=>  return frame(sender_sp(), link(), sender_pc());
  }

----------------------------------------------------------------------------------------------------------
    I did some experiments and found that the last "return" statement of
the function never gets executed when I do a specjbb2005 & specjbb2015 test.
    From the comments in the code, this "return" statement handles the
"native-compiled frame" case.
    I am curious about the condition of generating a native-compile frame
in hotspot.

Thanks for your help,
Felix


More information about the hotspot-dev mailing list