8208658: Make CDS archived heap regions usable even if compressed oop encoding has changed
Summary: Move different execution modes to IncompatibleOptions_stringDedup.java and IncompatibleOptions_noCompactStrings.java
Reviewed-by: jiangli, coleenp
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java Fri Aug 24 13:30:56 2018 -0700
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java Thu Aug 23 21:16:45 2018 -0700
@@ -29,15 +29,11 @@
* @requires vm.cds.archived.java.heap
* @requires (vm.gc=="null")
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- * jdk.jartool/sun.tools.jar
+ * @modules jdk.jartool/sun.tools.jar
* @build sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
* @build HelloString
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions
- * @run main/othervm -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions
- * @run main/othervm -XX:-CompactStrings -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions
*/
import jdk.test.lib.Asserts;
@@ -59,8 +55,10 @@
"The shared archive file's CompactStrings setting .* does not equal the current CompactStrings setting";
static String appJar;
+ static String[] globalVmOptions;
public static void main(String[] args) throws Exception {
+ globalVmOptions = args; // specified by "@run main" in IncompatibleOptions_*.java
appJar = JarBuilder.build("IncompatibleOptions", "HelloString");
// Uncompressed OOPs
@@ -116,14 +114,16 @@
System.out.println("Testcase: " + testCaseNr);
OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list("Hello"),
- "-XX:+UseCompressedOops",
- collectorOption,
- "-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("SharedStringsBasic.txt"),
- "-Xlog:cds,cds+hashtables",
- extraOption);
+ TestCommon.concat(globalVmOptions,
+ "-XX:+UseCompressedOops",
+ collectorOption,
+ "-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("SharedStringsBasic.txt"),
+ "-Xlog:cds,cds+hashtables",
+ extraOption));
- if (expectedWarning != null)
+ if (expectedWarning != null) {
output.shouldContain(expectedWarning);
+ }
if (expectedToFail) {
Asserts.assertNE(output.getExitValue(), 0,
@@ -140,19 +140,25 @@
// needed, otherwise system considers empty extra option as a
// main class param, and fails with "Could not find or load main class"
if (!extraOption.isEmpty()) {
- output = TestCommon.exec(appJar, "-XX:+UseCompressedOops",
- collectorOption, "-Xlog:cds", extraOption, "HelloString");
+ output = TestCommon.exec(appJar,
+ TestCommon.concat(globalVmOptions,
+ "-XX:+UseCompressedOops",
+ collectorOption, "-Xlog:cds", extraOption, "HelloString"));
} else {
- output = TestCommon.exec(appJar, "-XX:+UseCompressedOops",
- collectorOption, "-Xlog:cds", "HelloString");
+ output = TestCommon.exec(appJar,
+ TestCommon.concat(globalVmOptions,
+ "-XX:+UseCompressedOops",
+ collectorOption, "-Xlog:cds", "HelloString"));
}
- if (expectedWarning != null)
+ if (expectedWarning != null) {
output.shouldMatch(expectedWarning);
+ }
- if (expectedToFail)
+ if (expectedToFail) {
Asserts.assertNE(output.getExitValue(), 0);
- else
+ } else {
SharedStringsUtils.checkExec(output);
+ }
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions_noCompactStrings.java Thu Aug 23 21:16:45 2018 -0700
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018, 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
+ * @summary Test options that are incompatible with use of shared strings
+ * Also test mismatch in oops encoding between dump time and run time
+ * @requires vm.cds.archived.java.heap
+ * @requires (vm.gc=="null")
+ * @library /test/lib /test/hotspot/jtreg/runtime/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @build HelloString
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions -XX:-CompactStrings
+ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions_stringDedup.java Thu Aug 23 21:16:45 2018 -0700
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018, 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
+ * @summary Test options that are incompatible with use of shared strings
+ * Also test mismatch in oops encoding between dump time and run time
+ * @requires vm.cds.archived.java.heap
+ * @requires (vm.gc=="null")
+ * @library /test/lib /test/hotspot/jtreg/runtime/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @build HelloString
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions -XX:+UseStringDeduplication
+ */