Top


定義場所(file name)

hotspot/src/share/vm/interpreter/interpreterRuntime.cpp

説明(description)

スタックオーバーフローが起こった時点では, もうスタックに空きがないので あらかじめ確保&初期化済みの StackOverflowError クラスを用いる. 同じ理由から, 生成した StackOverflowError オブジェクトのコンストラクタも呼び出さない.

// Special handling for stack overflow: since we don't have any (java) stack
// space left we use the pre-allocated & pre-initialized StackOverflowError
// klass to create an stack overflow error instance.  We do not call its
// constructor for the same reason (it is empty, anyway).

名前(function name)

IRT_ENTRY(void, InterpreterRuntime::throw_StackOverflowError(JavaThread* thread))

本体部(body)

  {- -------------------------------------------
  (1) get_preinitialized_exception() を呼んで
      StackOverflowError オブジェクトを生成し, 
      THROW_HANDLE() で送出する.
      ---------------------------------------- -}

      Handle exception = get_preinitialized_exception(
                                     SystemDictionary::StackOverflowError_klass(),
                                     CHECK);
      THROW_HANDLE(exception);
    IRT_END

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