Top


定義場所(file name)

hotspot/src/share/vm/utilities/exceptions.cpp

名前(function name)

bool Exceptions::special_exception(Thread* thread, const char* file, int line, Symbol* h_name, const char* message) {

本体部(body)

  {- -------------------------------------------
  (1) もし初期化途中の段階であれば, vm_exit_during_initialization() で終了.
      ---------------------------------------- -}

      // bootstrapping check
      if (!Universe::is_fully_initialized()) {
        if (h_name == NULL) {
          // atleast an informative message.
          vm_exit_during_initialization("Exception", message);
        } else {
          vm_exit_during_initialization(h_name, message);
        }
        ShouldNotReachHere();
      }

  {- -------------------------------------------
  (1) もし, 引数で指定されたスレッドが VMThread か CompilerThread であれば, 
      適当な(ダミーの)例外オブジェクトを pending_exception にセットすることにする.
      この場合, (pending_exception へのセットはここでやってしまうので) true をリターン.
      ---------------------------------------- -}

      if (thread->is_VM_thread()
          || thread->is_Compiler_thread() ) {
        // We do not care what kind of exception we get for the vm-thread or a thread which
        // is compiling.  We just install a dummy exception object
        thread->set_pending_exception(Universe::vm_exception(), file, line);
        return true;
      }

  {- -------------------------------------------
  (1) 以上のどれでもなければ, false をリターン.
      ---------------------------------------- -}

      return false;
    }

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