349 if (PrintSystemDictionaryAtExit) { 350 SystemDictionary::print(); 351 } 352 353 if (PrintBiasedLockingStatistics) { 354 BiasedLocking::print_counters(); 355 } 356 357 #ifdef ENABLE_ZAP_DEAD_LOCALS 358 #ifdef COMPILER2 359 if (ZapDeadCompiledLocals) { 360 tty->print_cr("Compile::CompiledZap_count = %d", Compile::CompiledZap_count); 361 tty->print_cr("OptoRuntime::ZapDeadCompiledLocals_count = %d", OptoRuntime::ZapDeadCompiledLocals_count); 362 } 363 #endif // COMPILER2 364 #endif // ENABLE_ZAP_DEAD_LOCALS 365 // Native memory tracking data 366 if (PrintNMTStatistics) { 367 MemTracker::final_report(tty); 368 } 369 } 370 371 #else // PRODUCT MODE STATISTICS 372 373 void print_statistics() { 374 375 if (CITime) { 376 CompileBroker::print_times(); 377 } 378 379 if (PrintCodeCache) { 380 MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); 381 CodeCache::print(); 382 } 383 384 if (PrintMethodFlushingStatistics) { 385 NMethodSweeper::print(); 386 } 387 388 #ifdef COMPILER2 389 if (PrintPreciseBiasedLockingStatistics || PrintPreciseRTMLockingStatistics) { 390 OptoRuntime::print_named_counters(); 391 } 392 #endif 393 if (PrintBiasedLockingStatistics) { 394 BiasedLocking::print_counters(); 395 } 396 397 // Native memory tracking data 398 if (PrintNMTStatistics) { 399 MemTracker::final_report(tty); 400 } 401 } 402 403 #endif 404 405 406 // Helper class for registering on_exit calls through JVM_OnExit 407 408 extern "C" { 409 typedef void (*__exit_proc)(void); 410 } 411 412 class ExitProc : public CHeapObj<mtInternal> { 413 private: 414 __exit_proc _proc; 415 // void (*_proc)(void); 416 ExitProc* _next; 417 public: 418 // ExitProc(void (*proc)(void)) { 419 ExitProc(__exit_proc proc) { 420 _proc = proc; | 349 if (PrintSystemDictionaryAtExit) { 350 SystemDictionary::print(); 351 } 352 353 if (PrintBiasedLockingStatistics) { 354 BiasedLocking::print_counters(); 355 } 356 357 #ifdef ENABLE_ZAP_DEAD_LOCALS 358 #ifdef COMPILER2 359 if (ZapDeadCompiledLocals) { 360 tty->print_cr("Compile::CompiledZap_count = %d", Compile::CompiledZap_count); 361 tty->print_cr("OptoRuntime::ZapDeadCompiledLocals_count = %d", OptoRuntime::ZapDeadCompiledLocals_count); 362 } 363 #endif // COMPILER2 364 #endif // ENABLE_ZAP_DEAD_LOCALS 365 // Native memory tracking data 366 if (PrintNMTStatistics) { 367 MemTracker::final_report(tty); 368 } 369 370 if (AsyncGCLogging && PrintGCLogStatistics) { 371 tty->print_cr("GCLogOverflow: %d", GCLogEvent::buffer_overflow_count()); 372 } 373 } 374 375 #else // PRODUCT MODE STATISTICS 376 377 void print_statistics() { 378 379 if (CITime) { 380 CompileBroker::print_times(); 381 } 382 383 if (PrintCodeCache) { 384 MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); 385 CodeCache::print(); 386 } 387 388 if (PrintMethodFlushingStatistics) { 389 NMethodSweeper::print(); 390 } 391 392 #ifdef COMPILER2 393 if (PrintPreciseBiasedLockingStatistics || PrintPreciseRTMLockingStatistics) { 394 OptoRuntime::print_named_counters(); 395 } 396 #endif 397 if (PrintBiasedLockingStatistics) { 398 BiasedLocking::print_counters(); 399 } 400 401 // Native memory tracking data 402 if (PrintNMTStatistics) { 403 MemTracker::final_report(tty); 404 } 405 406 if (AsyncGCLogging && PrintGCLogStatistics) { 407 tty->print_cr("GCLogOverflow: %d", GCLogEvent::buffer_overflow_count()); 408 } 409 } 410 411 #endif 412 413 414 // Helper class for registering on_exit calls through JVM_OnExit 415 416 extern "C" { 417 typedef void (*__exit_proc)(void); 418 } 419 420 class ExitProc : public CHeapObj<mtInternal> { 421 private: 422 __exit_proc _proc; 423 // void (*_proc)(void); 424 ExitProc* _next; 425 public: 426 // ExitProc(void (*proc)(void)) { 427 ExitProc(__exit_proc proc) { 428 _proc = proc; |