< prev index next >

src/hotspot/share/runtime/init.cpp

Print this page
rev 59077 : 8153224.v2.09b.patch combined with 8153224.v2.10.patch; merge with jdk-15+21.


 159   NMT_stack_walkable = true;
 160 #endif // INCLUDE_NMT
 161 
 162   // All the flags that get adjusted by VM_Version_init and os::init_2
 163   // have been set so dump the flags now.
 164   if (PrintFlagsFinal || PrintFlagsRanges) {
 165     JVMFlag::printFlags(tty, false, PrintFlagsRanges);
 166   }
 167 
 168   return JNI_OK;
 169 }
 170 
 171 
 172 void exit_globals() {
 173   static bool destructorsCalled = false;
 174   if (!destructorsCalled) {
 175     destructorsCalled = true;
 176     if (log_is_enabled(Info, monitorinflation)) {
 177       // The ObjectMonitor subsystem uses perf counters so
 178       // do this before perfMemory_exit().
 179       // ObjectSynchronizer::finish_deflate_idle_monitors()'s call
 180       // to audit_and_print_stats() is done at the Debug level.




 181       ObjectSynchronizer::audit_and_print_stats(true /* on_exit */);
 182     }
 183     perfMemory_exit();
 184     SafepointTracing::statistics_exit_log();
 185     if (PrintStringTableStatistics) {
 186       SymbolTable::dump(tty);
 187       StringTable::dump(tty);
 188     }
 189     ostream_exit();
 190   }
 191 }
 192 
 193 static volatile bool _init_completed = false;
 194 
 195 bool is_init_completed() {
 196   return Atomic::load_acquire(&_init_completed);
 197 }
 198 
 199 void wait_init_completed() {
 200   MonitorLocker ml(InitCompleted_lock, Monitor::_no_safepoint_check_flag);


 159   NMT_stack_walkable = true;
 160 #endif // INCLUDE_NMT
 161 
 162   // All the flags that get adjusted by VM_Version_init and os::init_2
 163   // have been set so dump the flags now.
 164   if (PrintFlagsFinal || PrintFlagsRanges) {
 165     JVMFlag::printFlags(tty, false, PrintFlagsRanges);
 166   }
 167 
 168   return JNI_OK;
 169 }
 170 
 171 
 172 void exit_globals() {
 173   static bool destructorsCalled = false;
 174   if (!destructorsCalled) {
 175     destructorsCalled = true;
 176     if (log_is_enabled(Info, monitorinflation)) {
 177       // The ObjectMonitor subsystem uses perf counters so
 178       // do this before perfMemory_exit().
 179       // These other two audit_and_print_stats() calls are done at the
 180       // Debug level at a safepoint:
 181       // - for safepoint based deflation auditing:
 182       //   ObjectSynchronizer::finish_deflate_idle_monitors()
 183       // - for async deflation auditing:
 184       //   ObjectSynchronizer::do_safepoint_work()
 185       ObjectSynchronizer::audit_and_print_stats(true /* on_exit */);
 186     }
 187     perfMemory_exit();
 188     SafepointTracing::statistics_exit_log();
 189     if (PrintStringTableStatistics) {
 190       SymbolTable::dump(tty);
 191       StringTable::dump(tty);
 192     }
 193     ostream_exit();
 194   }
 195 }
 196 
 197 static volatile bool _init_completed = false;
 198 
 199 bool is_init_completed() {
 200   return Atomic::load_acquire(&_init_completed);
 201 }
 202 
 203 void wait_init_completed() {
 204   MonitorLocker ml(InitCompleted_lock, Monitor::_no_safepoint_check_flag);
< prev index next >