Top


定義場所(file name)

hotspot/src/share/vm/runtime/rframe.cpp

名前(function name)

RFrame* RFrame::new_RFrame(frame fr, JavaThread* thread, RFrame*const  callee) {

本体部(body)

  {- -------------------------------------------
  (1) (変数宣言など)
      ---------------------------------------- -}

      RFrame* rf;
      int dist = callee ? callee->distance() : -1;

  {- -------------------------------------------
  (1) 対象のスタックフレームに応じた RFrame オブジェクトを生成し, 初期化する.
      (interpreter frame の場合は InterpretedRFrame, そうでなければ CompiledRFrame)
      ---------------------------------------- -}

      if (fr.is_interpreted_frame()) {
        rf = new InterpretedRFrame(fr, thread, callee);
        dist++;
      } else if (fr.is_compiled_frame()) {
        // Even deopted frames look compiled because the deopt
        // is invisible until it happens.
        rf = new CompiledRFrame(fr, thread, callee);
      } else {
        assert(false, "Unhandled frame type");
      }
      rf->set_distance(dist);
      rf->init();

  {- -------------------------------------------
  (1) 結果をリターン
      ---------------------------------------- -}

      return rf;
    }

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.