Top


定義場所(file name)

hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp

名前(function name)

void InterpreterRuntime::SignatureHandlerGenerator::generate(uint64_t fingerprint) {

本体部(body)

  {- -------------------------------------------
  (1) コード生成:
      この InterpreterRuntime::SignatureHandlerGenerator オブジェクトに対して 
       SignatureIterator::iterate() を呼び出すことにより, 以下のようなコードを生成.
      「引数(fingerprint)で指定された型の引数を, 
       インタープリタのフレーム内から native の ABI に対応した位置へとコピー.」
      ---------------------------------------- -}

      // generate code to handle arguments
      iterate(fingerprint);

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

      // return result handler
      AddressLiteral result_handler(Interpreter::result_handler(method()->result_type()));

  {- -------------------------------------------
  (1) コード生成:
      「返値の型に対応する result handler のアドレスを Lscratch にセットしつつ, リターンする.」
      ---------------------------------------- -}

      __ sethi(result_handler, Lscratch);
      __ retl();
      __ delayed()->add(Lscratch, result_handler.low10(), Lscratch);

  {- -------------------------------------------
  (1) 以上のコードを flush().
      ---------------------------------------- -}

      __ flush();
    }

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