Top


定義場所(file name)

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

名前(function name)

void JavaThread::block_if_vm_exited() {

本体部(body)

  {- -------------------------------------------
  (1) もしスレッドの終了原因が「HotSpot の終了処理が開始された」ことによるものだった場合は, 
      ここで永久的にブロックする.

      (終了処理が始まっていると, _terminated フィールドが _vm_exited になる.
       See: VM_Exit::set_vm_exited())

      (なおブロック処理は, Monitor::lock_without_safepoint_check() を
       Threads_lock に対して呼び出すことで行う.
       終了処理で Threads_lock を取りっぱなしにしているはずなので, この確保処理は二度と起きてこない.)
      ---------------------------------------- -}

      if (_terminated == _vm_exited) {
        // _vm_exited is set at safepoint, and Threads_lock is never released
        // we will block here forever
        Threads_lock->lock_without_safepoint_check();
        ShouldNotReachHere();
      }
    }

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