8139868: CMSScavengeBeforeRemark broken after JDK-8134953
authorbrutisso
Tue, 20 Oct 2015 14:00:00 +0200
changeset 33229 51173444fdd5
parent 33228 9a491d1be90f
child 33230 23bb11a5cf4e
child 33577 d6c1611973dc
8139868: CMSScavengeBeforeRemark broken after JDK-8134953 Reviewed-by: sjohanss, jwilhelm
hotspot/src/share/vm/gc/shared/gcId.cpp
hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp
hotspot/test/gc/cms/TestCMSScavengeBeforeRemark.java
--- 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();
+    }
+}