< prev index next >

src/hotspot/share/runtime/init.cpp

Print this page
rev 56777 : See CR7-to-CR8-changes.


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




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


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