< prev index next > src/hotspot/share/runtime/init.cpp
Print this page
void codeCache_init();
void VM_Version_init();
void stubRoutines_init1();
jint universe_init(); // depends on codeCache_init and stubRoutines_init
// depends on universe_init, must be before interpreter_init (currently only on SPARC)
+ TSAN_ONLY(jint tsan_init();)
void gc_barrier_stubs_init();
void interpreter_init(); // before any methods loaded
void invocationCounter_init(); // before any methods loaded
void accessFlags_init();
void templateTable_init();
// Do not disable thread-local-storage, as it is important for some
// JNI/JVM/JVMTI functions and signal handlers to work properly
// during VM shutdown
void perfMemory_exit();
void ostream_exit();
+ TSAN_ONLY(void tsan_exit();)
void vm_init_globals() {
check_ThreadShadow();
basic_types_init();
eventlog_init();
chunkpool_init();
perfMemory_init();
SuspendibleThreadSet_init();
}
-
jint init_globals() {
HandleMark hm;
management_init();
bytecodes_init();
classLoader_init1();
jint status = universe_init(); // dependent on codeCache_init and
// stubRoutines_init1 and metaspace_init.
if (status != JNI_OK)
return status;
+ TSAN_RUNTIME_ONLY(
+ status = tsan_init();
+ if (status != JNI_OK) {
+ return status;
+ }
+ );
+
gc_barrier_stubs_init(); // depends on universe_init, must be before interpreter_init
interpreter_init(); // before any methods loaded
invocationCounter_init(); // before any methods loaded
accessFlags_init();
templateTable_init();
void exit_globals() {
static bool destructorsCalled = false;
if (!destructorsCalled) {
destructorsCalled = true;
+
+ TSAN_RUNTIME_ONLY(tsan_exit());
+
if (log_is_enabled(Info, monitorinflation)) {
// The ObjectMonitor subsystem uses perf counters so
// do this before perfMemory_exit().
// ObjectSynchronizer::finish_deflate_idle_monitors()'s call
// to audit_and_print_stats() is done at the Debug level.
< prev index next >