hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
/*
Interpreter safepoint: it is expected that the interpreter will have no live
handles of its own creation live at an interpreter safepoint. Therefore we
run a HandleMarkCleaner and trash all handles allocated in the call chain
since the JavaCalls::call_helper invocation that initiated the chain.
There really shouldn't be any handles remaining to trash but this is cheap
in relation to a safepoint.
*/
#define SAFEPOINT \
if ( SafepointSynchronize::is_synchronizing()) { \
{ \
/* zap freed handles rather than GC'ing them */ \
HandleMarkCleaner __hmc(THREAD); \
} \
CALL_VM(SafepointSynchronize::block(THREAD), handle_exception); \
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.