hotspot/src/share/vm/utilities/exceptions.cpp
bool Exceptions::special_exception(Thread* thread, const char* file, int line, Symbol* h_name, const char* message) {
{- -------------------------------------------
(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.