# HG changeset patch # User dcubed # Date 1248809700 21600 # Node ID 2b4230d1e5894436f05382766a63cf0a66cda3e1 # Parent 26bc4770e671cde8b18b32f5491974785d8b9720 6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints) Summary: Correctly count full GC operations for framework collectors. Add ForceFullGCJVMTIEpilogues as a future work around if needed. Reviewed-by: jcoomes, alanb, ysr diff -r 26bc4770e671 -r 2b4230d1e589 src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp Sat Dec 20 09:58:36 2008 -0800 +++ b/src/share/vm/memory/genCollectedHeap.cpp Tue Jul 28 13:35:00 2009 -0600 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2009 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 @@ -456,6 +456,12 @@ int max_level_collected = starting_level; for (int i = starting_level; i <= max_level; i++) { if (_gens[i]->should_collect(full, size, is_tlab)) { + if (i == n_gens() - 1) { // a major collection is to happen + if (!complete) { + // The full_collections increment was missed above. + increment_total_full_collections(); + } + } // Timer for individual generations. Last argument is false: no CR TraceTime t1(_gens[i]->short_name(), PrintGCDetails, false, gclog_or_tty); TraceCollectorStats tcs(_gens[i]->counters()); diff -r 26bc4770e671 -r 2b4230d1e589 src/share/vm/prims/jvmtiExport.cpp --- a/src/share/vm/prims/jvmtiExport.cpp Sat Dec 20 09:58:36 2008 -0800 +++ b/src/share/vm/prims/jvmtiExport.cpp Tue Jul 28 13:35:00 2009 -0600 @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2009 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 @@ -2421,6 +2421,11 @@ return; } + if (ForceFullGCJVMTIEpilogues) { + // force 'Full GC' was done semantics for JVMTI GC epilogues + _full = true; + } + // GarbageCollectionStart event posted from VM thread - okay because // JVMTI is clear that the "world is stopped" and callback shouldn't // try to call into the VM. diff -r 26bc4770e671 -r 2b4230d1e589 src/share/vm/runtime/globals.hpp --- a/src/share/vm/runtime/globals.hpp Sat Dec 20 09:58:36 2008 -0800 +++ b/src/share/vm/runtime/globals.hpp Tue Jul 28 13:35:00 2009 -0600 @@ -1,5 +1,5 @@ /* - * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2009 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 @@ -1053,6 +1053,9 @@ product(ccstr, TraceJVMTI, NULL, \ "Trace flags for JVMTI functions and events") \ \ + product(bool, ForceFullGCJVMTIEpilogues, false, \ + "Force 'Full GC' was done semantics for JVMTI GC epilogues") \ + \ /* This option can change an EMCP method into an obsolete method. */ \ /* This can affect tests that except specific methods to be EMCP. */ \ /* This option should be used with caution. */ \