8139868: CMSScavengeBeforeRemark broken after JDK-8134953
Reviewed-by: sjohanss, jwilhelm
--- a/hotspot/src/share/vm/gc/shared/gcId.cpp Mon Oct 19 15:21:01 2015 +0200
+++ b/hotspot/src/share/vm/gc/shared/gcId.cpp Tue Oct 20 14:00:00 2015 +0200
@@ -60,12 +60,12 @@
}
GCIdMarkAndRestore::GCIdMarkAndRestore() : _gc_id(GCId::create()) {
- _previous_gc_id = GCId::current(); // will assert that the GC Id is not undefined
+ _previous_gc_id = GCId::current_raw();
currentNamedthread()->set_gc_id(_gc_id);
}
GCIdMarkAndRestore::GCIdMarkAndRestore(uint gc_id) : _gc_id(gc_id) {
- _previous_gc_id = GCId::current(); // will assert that the GC Id is not undefinied
+ _previous_gc_id = GCId::current_raw();
currentNamedthread()->set_gc_id(_gc_id);
}
--- a/hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp Mon Oct 19 15:21:01 2015 +0200
+++ b/hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp Tue Oct 20 14:00:00 2015 +0200
@@ -433,7 +433,7 @@
return; // GC is disabled (e.g. JNI GetXXXCritical operation)
}
- GCIdMark gc_id_mark;
+ GCIdMarkAndRestore gc_id_mark;
const bool do_clear_all_soft_refs = clear_all_soft_refs ||
collector_policy()->should_clear_all_soft_refs();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/gc/cms/TestCMSScavengeBeforeRemark.java Tue Oct 20 14:00:00 2015 +0200
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2015, Oracle and/or its affiliates. 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
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*/
+
+/*
+ * @test TestCMSScavengeBeforeRemark
+ * @key gc
+ * @bug 8139868
+ * @requires vm.gc=="ConcMarkSweep" | vm.gc=="null"
+ * @summary Run CMS with CMSScavengeBeforeRemark
+ * @run main/othervm -XX:+UseConcMarkSweepGC -XX:+CMSScavengeBeforeRemark -XX:+ExplicitGCInvokesConcurrent -Xmx256m -XX:+PrintGCDetails TestCMSScavengeBeforeRemark
+ */
+
+public class TestCMSScavengeBeforeRemark {
+ public static void main(String args[]) throws Exception {
+ System.gc();
+ }
+}