# HG changeset patch # User johnc # Date 1265752569 28800 # Node ID 8859772195c68e7a6182df2f4fc6448b6734fb10 # Parent 9eee977dd1a982777af3e5785b9a1d8c079c8cf3 6782663: Data produced by PrintGCApplicationConcurrentTime and PrintGCApplicationStoppedTime is not accurate. Summary: Update and display the timers associated with these flags for all safepoints. Reviewed-by: ysr, jcoomes diff -r 9eee977dd1a9 -r 8859772195c6 src/share/vm/runtime/vmThread.cpp --- a/src/share/vm/runtime/vmThread.cpp Mon Feb 08 14:23:01 2010 -0500 +++ b/src/share/vm/runtime/vmThread.cpp Tue Feb 09 13:56:09 2010 -0800 @@ -1,5 +1,5 @@ /* - * Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -426,11 +426,6 @@ // follow that also require a safepoint if (_cur_vm_operation->evaluate_at_safepoint()) { - if (PrintGCApplicationConcurrentTime) { - gclog_or_tty->print_cr("Application time: %3.7f seconds", - RuntimeService::last_application_time_sec()); - } - _vm_queue->set_drain_list(safepoint_ops); // ensure ops can be scanned SafepointSynchronize::begin(); @@ -477,12 +472,6 @@ // Complete safepoint synchronization SafepointSynchronize::end(); - if (PrintGCApplicationStoppedTime) { - gclog_or_tty->print_cr("Total time for which application threads " - "were stopped: %3.7f seconds", - RuntimeService::last_safepoint_time_sec()); - } - } else { // not a safepoint operation if (TraceLongCompiles) { elapsedTimer t; diff -r 9eee977dd1a9 -r 8859772195c6 src/share/vm/services/runtimeService.cpp --- a/src/share/vm/services/runtimeService.cpp Mon Feb 08 14:23:01 2010 -0500 +++ b/src/share/vm/services/runtimeService.cpp Tue Feb 09 13:56:09 2010 -0800 @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -104,6 +104,13 @@ void RuntimeService::record_safepoint_begin() { HS_DTRACE_PROBE(hs_private, safepoint__begin); + + // Print the time interval in which the app was executing + if (PrintGCApplicationConcurrentTime) { + gclog_or_tty->print_cr("Application time: %3.7f seconds", + last_application_time_sec()); + } + // update the time stamp to begin recording safepoint time _safepoint_timer.update(); if (UsePerfData) { @@ -122,6 +129,15 @@ void RuntimeService::record_safepoint_end() { HS_DTRACE_PROBE(hs_private, safepoint__end); + + // Print the time interval for which the app was stopped + // during the current safepoint operation. + if (PrintGCApplicationStoppedTime) { + gclog_or_tty->print_cr("Total time for which application threads " + "were stopped: %3.7f seconds", + last_safepoint_time_sec()); + } + // update the time stamp to begin recording app time _app_timer.update(); if (UsePerfData) {