mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8277481: Obsolete seldom used CDS flags
Reviewed-by: iklam, ccheung, dholmes
This commit is contained in:
parent
23fd9f15da
commit
14f7385a72
13 changed files with 58 additions and 130 deletions
|
@ -1514,7 +1514,7 @@ static void no_shared_spaces(const char* message) {
|
||||||
vm_exit_during_initialization("Unable to use shared archive", message);
|
vm_exit_during_initialization("Unable to use shared archive", message);
|
||||||
} else {
|
} else {
|
||||||
log_info(cds)("Unable to use shared archive: %s", message);
|
log_info(cds)("Unable to use shared archive: %s", message);
|
||||||
FLAG_SET_DEFAULT(UseSharedSpaces, false);
|
UseSharedSpaces = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2703,33 +2703,19 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, bool* patch_m
|
||||||
set_mode_flags(_comp);
|
set_mode_flags(_comp);
|
||||||
// -Xshare:dump
|
// -Xshare:dump
|
||||||
} else if (match_option(option, "-Xshare:dump")) {
|
} else if (match_option(option, "-Xshare:dump")) {
|
||||||
if (FLAG_SET_CMDLINE(DumpSharedSpaces, true) != JVMFlag::SUCCESS) {
|
DumpSharedSpaces = true;
|
||||||
return JNI_EINVAL;
|
|
||||||
}
|
|
||||||
// -Xshare:on
|
// -Xshare:on
|
||||||
} else if (match_option(option, "-Xshare:on")) {
|
} else if (match_option(option, "-Xshare:on")) {
|
||||||
if (FLAG_SET_CMDLINE(UseSharedSpaces, true) != JVMFlag::SUCCESS) {
|
UseSharedSpaces = true;
|
||||||
return JNI_EINVAL;
|
RequireSharedSpaces = true;
|
||||||
}
|
|
||||||
if (FLAG_SET_CMDLINE(RequireSharedSpaces, true) != JVMFlag::SUCCESS) {
|
|
||||||
return JNI_EINVAL;
|
|
||||||
}
|
|
||||||
// -Xshare:auto || -XX:ArchiveClassesAtExit=<archive file>
|
// -Xshare:auto || -XX:ArchiveClassesAtExit=<archive file>
|
||||||
} else if (match_option(option, "-Xshare:auto")) {
|
} else if (match_option(option, "-Xshare:auto")) {
|
||||||
if (FLAG_SET_CMDLINE(UseSharedSpaces, true) != JVMFlag::SUCCESS) {
|
UseSharedSpaces = true;
|
||||||
return JNI_EINVAL;
|
RequireSharedSpaces = false;
|
||||||
}
|
|
||||||
if (FLAG_SET_CMDLINE(RequireSharedSpaces, false) != JVMFlag::SUCCESS) {
|
|
||||||
return JNI_EINVAL;
|
|
||||||
}
|
|
||||||
// -Xshare:off
|
// -Xshare:off
|
||||||
} else if (match_option(option, "-Xshare:off")) {
|
} else if (match_option(option, "-Xshare:off")) {
|
||||||
if (FLAG_SET_CMDLINE(UseSharedSpaces, false) != JVMFlag::SUCCESS) {
|
UseSharedSpaces = false;
|
||||||
return JNI_EINVAL;
|
RequireSharedSpaces = false;
|
||||||
}
|
|
||||||
if (FLAG_SET_CMDLINE(RequireSharedSpaces, false) != JVMFlag::SUCCESS) {
|
|
||||||
return JNI_EINVAL;
|
|
||||||
}
|
|
||||||
// -Xverify
|
// -Xverify
|
||||||
} else if (match_option(option, "-Xverify", &tail)) {
|
} else if (match_option(option, "-Xverify", &tail)) {
|
||||||
if (strcmp(tail, ":all") == 0 || strcmp(tail, "") == 0) {
|
if (strcmp(tail, ":all") == 0 || strcmp(tail, "") == 0) {
|
||||||
|
@ -2983,12 +2969,8 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, bool* patch_m
|
||||||
// -Xshare:on
|
// -Xshare:on
|
||||||
// -Xlog:class+path=info
|
// -Xlog:class+path=info
|
||||||
if (PrintSharedArchiveAndExit) {
|
if (PrintSharedArchiveAndExit) {
|
||||||
if (FLAG_SET_CMDLINE(UseSharedSpaces, true) != JVMFlag::SUCCESS) {
|
UseSharedSpaces = true;
|
||||||
return JNI_EINVAL;
|
RequireSharedSpaces = true;
|
||||||
}
|
|
||||||
if (FLAG_SET_CMDLINE(RequireSharedSpaces, true) != JVMFlag::SUCCESS) {
|
|
||||||
return JNI_EINVAL;
|
|
||||||
}
|
|
||||||
LogConfiguration::configure_stdout(LogLevel::Info, true, LOG_TAGS(class, path));
|
LogConfiguration::configure_stdout(LogLevel::Info, true, LOG_TAGS(class, path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3144,11 +3126,11 @@ jint Arguments::finalize_vm_init_args(bool patch_mod_javabase) {
|
||||||
#if INCLUDE_CDS
|
#if INCLUDE_CDS
|
||||||
if (DumpSharedSpaces) {
|
if (DumpSharedSpaces) {
|
||||||
// Compiler threads may concurrently update the class metadata (such as method entries), so it's
|
// Compiler threads may concurrently update the class metadata (such as method entries), so it's
|
||||||
// unsafe with DumpSharedSpaces (which modifies the class metadata in place). Let's disable
|
// unsafe with -Xshare:dump (which modifies the class metadata in place). Let's disable
|
||||||
// compiler just to be safe.
|
// compiler just to be safe.
|
||||||
//
|
//
|
||||||
// Note: this is not a concern for DynamicDumpSharedSpaces, which makes a copy of the class metadata
|
// Note: this is not a concern for dynamically dumping shared spaces, which makes a copy of the
|
||||||
// instead of modifying them in place. The copy is inaccessible to the compiler.
|
// class metadata instead of modifying them in place. The copy is inaccessible to the compiler.
|
||||||
// TODO: revisit the following for the static archive case.
|
// TODO: revisit the following for the static archive case.
|
||||||
set_mode_flags(_int);
|
set_mode_flags(_int);
|
||||||
}
|
}
|
||||||
|
@ -3161,16 +3143,16 @@ jint Arguments::finalize_vm_init_args(bool patch_mod_javabase) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArchiveClassesAtExit == NULL && !RecordDynamicDumpInfo) {
|
if (ArchiveClassesAtExit == NULL && !RecordDynamicDumpInfo) {
|
||||||
FLAG_SET_DEFAULT(DynamicDumpSharedSpaces, false);
|
DynamicDumpSharedSpaces = false;
|
||||||
} else {
|
} else {
|
||||||
FLAG_SET_DEFAULT(DynamicDumpSharedSpaces, true);
|
DynamicDumpSharedSpaces = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UseSharedSpaces && patch_mod_javabase) {
|
if (UseSharedSpaces && patch_mod_javabase) {
|
||||||
no_shared_spaces("CDS is disabled when " JAVA_BASE_NAME " module is patched.");
|
no_shared_spaces("CDS is disabled when " JAVA_BASE_NAME " module is patched.");
|
||||||
}
|
}
|
||||||
if (UseSharedSpaces && !DumpSharedSpaces && check_unsupported_cds_runtime_properties()) {
|
if (UseSharedSpaces && !DumpSharedSpaces && check_unsupported_cds_runtime_properties()) {
|
||||||
FLAG_SET_DEFAULT(UseSharedSpaces, false);
|
UseSharedSpaces = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DumpSharedSpaces || DynamicDumpSharedSpaces) {
|
if (DumpSharedSpaces || DynamicDumpSharedSpaces) {
|
||||||
|
@ -4013,7 +3995,7 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
||||||
if ((UseSharedSpaces && FLAG_IS_CMDLINE(UseSharedSpaces)) ||
|
if ((UseSharedSpaces && FLAG_IS_CMDLINE(UseSharedSpaces)) ||
|
||||||
log_is_enabled(Info, cds)) {
|
log_is_enabled(Info, cds)) {
|
||||||
warning("Shared spaces are not supported in this VM");
|
warning("Shared spaces are not supported in this VM");
|
||||||
FLAG_SET_DEFAULT(UseSharedSpaces, false);
|
UseSharedSpaces = false;
|
||||||
LogConfiguration::configure_stdout(LogLevel::Off, true, LOG_TAGS(cds));
|
LogConfiguration::configure_stdout(LogLevel::Off, true, LOG_TAGS(cds));
|
||||||
}
|
}
|
||||||
no_shared_spaces("CDS Disabled");
|
no_shared_spaces("CDS Disabled");
|
||||||
|
|
|
@ -1805,23 +1805,9 @@ const intx ObjectAlignmentInBytes = 8;
|
||||||
\
|
\
|
||||||
/* Shared spaces */ \
|
/* Shared spaces */ \
|
||||||
\
|
\
|
||||||
product(bool, UseSharedSpaces, true, \
|
|
||||||
"(Deprecated) Use shared spaces for metadata") \
|
|
||||||
\
|
|
||||||
product(bool, VerifySharedSpaces, false, \
|
product(bool, VerifySharedSpaces, false, \
|
||||||
"Verify integrity of shared spaces") \
|
"Verify integrity of shared spaces") \
|
||||||
\
|
\
|
||||||
product(bool, RequireSharedSpaces, false, \
|
|
||||||
"(Deprecated) Require shared spaces for metadata") \
|
|
||||||
\
|
|
||||||
product(bool, DumpSharedSpaces, false, \
|
|
||||||
"(Deprecated) Special mode: JVM reads a class list, loads " \
|
|
||||||
"classes, builds shared spaces, and dumps the shared spaces to " \
|
|
||||||
"a file to be used in future JVM runs") \
|
|
||||||
\
|
|
||||||
product(bool, DynamicDumpSharedSpaces, false, \
|
|
||||||
"(Deprecated) Dynamic archive") \
|
|
||||||
\
|
|
||||||
product(bool, RecordDynamicDumpInfo, false, \
|
product(bool, RecordDynamicDumpInfo, false, \
|
||||||
"Record class info for jcmd VM.cds dynamic_dump") \
|
"Record class info for jcmd VM.cds dynamic_dump") \
|
||||||
\
|
\
|
||||||
|
|
|
@ -39,6 +39,14 @@ int LogBitsPerHeapOop = 0;
|
||||||
int BytesPerHeapOop = 0;
|
int BytesPerHeapOop = 0;
|
||||||
int BitsPerHeapOop = 0;
|
int BitsPerHeapOop = 0;
|
||||||
|
|
||||||
|
// Old CDS options
|
||||||
|
bool DumpSharedSpaces;
|
||||||
|
bool DynamicDumpSharedSpaces;
|
||||||
|
bool RequireSharedSpaces;
|
||||||
|
extern "C" {
|
||||||
|
JNIEXPORT jboolean UseSharedSpaces = true;
|
||||||
|
}
|
||||||
|
|
||||||
// Object alignment, in units of HeapWords.
|
// Object alignment, in units of HeapWords.
|
||||||
// Defaults are -1 so things will break badly if incorrectly initialized.
|
// Defaults are -1 so things will break badly if incorrectly initialized.
|
||||||
int MinObjAlignment = -1;
|
int MinObjAlignment = -1;
|
||||||
|
|
|
@ -508,6 +508,16 @@ const jfloat max_jfloat = jfloat_cast(max_jintFloat);
|
||||||
|
|
||||||
const int max_method_code_size = 64*K - 1; // JVM spec, 2nd ed. section 4.8.1 (p.134)
|
const int max_method_code_size = 64*K - 1; // JVM spec, 2nd ed. section 4.8.1 (p.134)
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// old CDS options
|
||||||
|
extern bool DumpSharedSpaces;
|
||||||
|
extern bool DynamicDumpSharedSpaces;
|
||||||
|
extern bool RequireSharedSpaces;
|
||||||
|
extern "C" {
|
||||||
|
// Make sure UseSharedSpaces is accessible to the serviceability agent.
|
||||||
|
extern JNIEXPORT jboolean UseSharedSpaces;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Object alignment, in units of HeapWords.
|
// Object alignment, in units of HeapWords.
|
||||||
//
|
//
|
||||||
|
|
|
@ -66,7 +66,7 @@ public class CDS {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is sharing enabled via the UseSharedSpaces flag.
|
* Is sharing enabled.
|
||||||
*/
|
*/
|
||||||
public static boolean isSharingEnabled() {
|
public static boolean isSharingEnabled() {
|
||||||
return isSharingEnabled;
|
return isSharingEnabled;
|
||||||
|
@ -232,15 +232,11 @@ public class CDS {
|
||||||
|
|
||||||
private static String[] excludeFlags = {
|
private static String[] excludeFlags = {
|
||||||
"-XX:DumpLoadedClassList=",
|
"-XX:DumpLoadedClassList=",
|
||||||
"-XX:+DumpSharedSpaces",
|
|
||||||
"-XX:+DynamicDumpSharedSpaces",
|
|
||||||
"-XX:+RecordDynamicDumpInfo",
|
"-XX:+RecordDynamicDumpInfo",
|
||||||
"-Xshare:",
|
"-Xshare:",
|
||||||
"-XX:SharedClassListFile=",
|
"-XX:SharedClassListFile=",
|
||||||
"-XX:SharedArchiveFile=",
|
"-XX:SharedArchiveFile=",
|
||||||
"-XX:ArchiveClassesAtExit=",
|
"-XX:ArchiveClassesAtExit="};
|
||||||
"-XX:+UseSharedSpaces",
|
|
||||||
"-XX:+RequireSharedSpaces"};
|
|
||||||
private static boolean containsExcludedFlags(String testStr) {
|
private static boolean containsExcludedFlags(String testStr) {
|
||||||
for (String e : excludeFlags) {
|
for (String e : excludeFlags) {
|
||||||
if (testStr.contains(e)) {
|
if (testStr.contains(e)) {
|
||||||
|
|
|
@ -943,9 +943,13 @@ public class VM {
|
||||||
|
|
||||||
public boolean isSharingEnabled() {
|
public boolean isSharingEnabled() {
|
||||||
if (sharingEnabled == null) {
|
if (sharingEnabled == null) {
|
||||||
Flag flag = getCommandLineFlag("UseSharedSpaces");
|
Address address = VM.getVM().getDebugger().lookup(null, "UseSharedSpaces");
|
||||||
sharingEnabled = (flag == null)? Boolean.FALSE :
|
if (address == null && getOS().equals("win32")) {
|
||||||
(flag.getBool()? Boolean.TRUE: Boolean.FALSE);
|
// On Win32 symbols are prefixed with the dll name. So look for
|
||||||
|
// UseSharedSpaces as a symbol in jvm.dll.
|
||||||
|
address = VM.getVM().getDebugger().lookup(null, "jvm!UseSharedSpaces");
|
||||||
|
}
|
||||||
|
sharingEnabled = address.getJBooleanAt(0);
|
||||||
}
|
}
|
||||||
return sharingEnabled.booleanValue();
|
return sharingEnabled.booleanValue();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -300,7 +300,7 @@ bool init_classsharing_workaround(struct ps_prochandle* ph) {
|
||||||
jvm_name = lib->name;
|
jvm_name = lib->name;
|
||||||
useSharedSpacesAddr = lookup_symbol(ph, jvm_name, USE_SHARED_SPACES_SYM);
|
useSharedSpacesAddr = lookup_symbol(ph, jvm_name, USE_SHARED_SPACES_SYM);
|
||||||
if (useSharedSpacesAddr == 0) {
|
if (useSharedSpacesAddr == 0) {
|
||||||
print_debug("can't lookup 'UseSharedSpaces' flag\n");
|
print_debug("can't lookup 'UseSharedSpaces' symbol\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,7 +308,7 @@ bool init_classsharing_workaround(struct ps_prochandle* ph) {
|
||||||
// using equivalent type jboolean to read the value of
|
// using equivalent type jboolean to read the value of
|
||||||
// UseSharedSpaces which is same as hotspot type "bool".
|
// UseSharedSpaces which is same as hotspot type "bool".
|
||||||
if (read_jboolean(ph, useSharedSpacesAddr, &useSharedSpaces) != true) {
|
if (read_jboolean(ph, useSharedSpacesAddr, &useSharedSpaces) != true) {
|
||||||
print_debug("can't read the value of 'UseSharedSpaces' flag\n");
|
print_debug("can't read the value of 'UseSharedSpaces' symbol\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,12 +45,6 @@ public class SharedArchiveFile {
|
||||||
.setArchiveName("./SharedArchiveFile.jsa");
|
.setArchiveName("./SharedArchiveFile.jsa");
|
||||||
CDSTestUtils.createArchiveAndCheck(opts);
|
CDSTestUtils.createArchiveAndCheck(opts);
|
||||||
|
|
||||||
// -XX:+DumpSharedSpaces should behave the same as -Xshare:dump
|
|
||||||
opts = (new CDSOptions())
|
|
||||||
.addPrefix("-XX:+DumpSharedSpaces", "-Xlog:cds")
|
|
||||||
.setArchiveName("./SharedArchiveFile.jsa");
|
|
||||||
CDSTestUtils.createArchiveAndCheck(opts);
|
|
||||||
|
|
||||||
opts = (new CDSOptions())
|
opts = (new CDSOptions())
|
||||||
.setArchiveName("./SharedArchiveFile.jsa");
|
.setArchiveName("./SharedArchiveFile.jsa");
|
||||||
CDSTestUtils.run(opts)
|
CDSTestUtils.run(opts)
|
||||||
|
|
|
@ -280,10 +280,10 @@ class DynamicArchiveTestBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return true if the UseSharedSpaces flag has been disabled.
|
* Return true if sharing has been disabled.
|
||||||
* By default, the VM will be started with -Xshare:auto.
|
* By default, the VM will be started with -Xshare:auto.
|
||||||
* The UseSharedSpaces flag will be disabled by the VM if there's some
|
* Sharing will be disabled by the VM if there's some problem
|
||||||
* problem in using the default CDS archive. It could happen under some
|
* in using the default CDS archive. It could happen under some
|
||||||
* situations such as follows:
|
* situations such as follows:
|
||||||
* - the default CDS archive wasn't generated during build time because
|
* - the default CDS archive wasn't generated during build time because
|
||||||
* the JDK was built via cross-compilation on a different platform;
|
* the JDK was built via cross-compilation on a different platform;
|
||||||
|
@ -294,6 +294,6 @@ class DynamicArchiveTestBase {
|
||||||
* enabled when the default CDS archive was built.
|
* enabled when the default CDS archive was built.
|
||||||
*/
|
*/
|
||||||
public static boolean isUseSharedSpacesDisabled() {
|
public static boolean isUseSharedSpacesDisabled() {
|
||||||
return (WB.getBooleanVMFlag("UseSharedSpaces") == false);
|
return !WB.isSharingEnabled();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019, 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 The DynamicDumpShareSpaces flag is internal, setting it at the command line should have no effect.
|
|
||||||
* @requires vm.cds
|
|
||||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
|
|
||||||
* @compile ../test-classes/Hello.java
|
|
||||||
* @run driver DynamicFlag
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class DynamicFlag {
|
|
||||||
public static void main(String[] args) throws Exception {
|
|
||||||
TestCommon.test(JarBuilder.getOrCreateHelloJar(),
|
|
||||||
TestCommon.list("Hello"), "-XX:+DynamicDumpSharedSpaces", "Hello");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -96,7 +96,7 @@ public abstract class JCmdTestDumpBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void checkCDSEnabled() throws Exception {
|
private static void checkCDSEnabled() throws Exception {
|
||||||
boolean cdsEnabled = WhiteBox.getWhiteBox().getBooleanVMFlag("UseSharedSpaces");
|
boolean cdsEnabled = WhiteBox.getWhiteBox().isSharingEnabled();
|
||||||
if (!cdsEnabled) {
|
if (!cdsEnabled) {
|
||||||
throw new SkippedException("CDS is not available for this JDK.");
|
throw new SkippedException("CDS is not available for this JDK.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,20 +81,13 @@ public class JCmdTestDynamicDump extends JCmdTestDumpBase {
|
||||||
test(null, pid, noBoot, EXPECT_PASS, DYNAMIC_MESSAGES);
|
test(null, pid, noBoot, EXPECT_PASS, DYNAMIC_MESSAGES);
|
||||||
app.stopApp();
|
app.stopApp();
|
||||||
|
|
||||||
// Test dynamic dump with flags -XX:+RecordDynamicDumpInfo -XX:-DynamicDumpSharedSpaces.
|
// Test dynamic dump with flag -XX:+RecordDynamicDumpInfo
|
||||||
print2ln(test_count++ + " Test dynamic dump with flags -XX:+RecordDynamicDumpInfo -XX:-DynamicDumpSharedSpaces.");
|
print2ln(test_count++ + " Test dynamic dump with flag -XX:+RecordDynamicDumpInfo.");
|
||||||
app = createLingeredApp("-cp", allJars, "-XX:+RecordDynamicDumpInfo", "-XX:-DynamicDumpSharedSpaces");
|
app = createLingeredApp("-cp", allJars, "-XX:+RecordDynamicDumpInfo");
|
||||||
pid = app.getPid();
|
pid = app.getPid();
|
||||||
test(null, pid, noBoot, EXPECT_PASS, DYNAMIC_MESSAGES);
|
test(null, pid, noBoot, EXPECT_PASS, DYNAMIC_MESSAGES);
|
||||||
app.stopApp();
|
app.stopApp();
|
||||||
|
|
||||||
// Test dynamic dump with flags -XX:-DynamicDumpSharedSpaces -XX:+RecordDynamicDumpInfo.
|
|
||||||
print2ln(test_count++ + " Test dynamic dump with flags -XX:-DynamicDumpSharedSpaces -XX:+RecordDynamicDumpInfo.");
|
|
||||||
app = createLingeredApp("-cp", allJars, "-XX:-DynamicDumpSharedSpaces", "-XX:+RecordDynamicDumpInfo");
|
|
||||||
pid = app.getPid();
|
|
||||||
test(null, pid, noBoot, EXPECT_PASS, DYNAMIC_MESSAGES);
|
|
||||||
app.stopApp();
|
|
||||||
|
|
||||||
// Test dynamic with -Xbootclasspath/a:boot.jar
|
// Test dynamic with -Xbootclasspath/a:boot.jar
|
||||||
print2ln(test_count++ + " Test dynamic with -Xbootclasspath/a:boot.jar");
|
print2ln(test_count++ + " Test dynamic with -Xbootclasspath/a:boot.jar");
|
||||||
app = createLingeredApp("-cp", testJar, "-Xbootclasspath/a:" + bootJar, "-XX:+RecordDynamicDumpInfo");
|
app = createLingeredApp("-cp", testJar, "-Xbootclasspath/a:" + bootJar, "-XX:+RecordDynamicDumpInfo");
|
||||||
|
|
|
@ -45,25 +45,19 @@ public class JCmdTestStaticDump extends JCmdTestDumpBase {
|
||||||
"LingeredApp source: shared objects file",
|
"LingeredApp source: shared objects file",
|
||||||
"Hello source: shared objects file"};
|
"Hello source: shared objects file"};
|
||||||
|
|
||||||
// Those two flags will not create a successful LingeredApp.
|
// This flag will not create a successful LingeredApp.
|
||||||
private static String[] noDumpFlags =
|
private static String[] noDumpFlags =
|
||||||
{"-XX:+DumpSharedSpaces",
|
{"-Xshare:dump"};
|
||||||
"-Xshare:dump"};
|
|
||||||
// Those flags will be excluded in static dumping,
|
// Those flags will be excluded in static dumping,
|
||||||
// See src/java.base/share/classes/jdk/internal/misc/CDS.java
|
// See src/java.base/share/classes/jdk/internal/misc/CDS.java
|
||||||
private static String[] excludeFlags = {
|
private static String[] excludeFlags = {
|
||||||
"-XX:DumpLoadedClassList=AnyFileName.classlist",
|
"-XX:DumpLoadedClassList=AnyFileName.classlist",
|
||||||
// this flag just dump archive, won't run app normally.
|
|
||||||
// "-XX:+DumpSharedSpaces",
|
|
||||||
"-XX:+DynamicDumpSharedSpaces",
|
|
||||||
"-XX:+RecordDynamicDumpInfo",
|
"-XX:+RecordDynamicDumpInfo",
|
||||||
"-Xshare:on",
|
"-Xshare:on",
|
||||||
"-Xshare:auto",
|
"-Xshare:auto",
|
||||||
"-XX:SharedClassListFile=non-exist.classlist",
|
"-XX:SharedClassListFile=non-exist.classlist",
|
||||||
"-XX:SharedArchiveFile=non-exist.jsa",
|
"-XX:SharedArchiveFile=non-exist.jsa",
|
||||||
"-XX:ArchiveClassesAtExit=tmp.jsa",
|
"-XX:ArchiveClassesAtExit=tmp.jsa"};
|
||||||
"-XX:+UseSharedSpaces",
|
|
||||||
"-XX:+RequireSharedSpaces"};
|
|
||||||
|
|
||||||
// Times to dump cds against same process.
|
// Times to dump cds against same process.
|
||||||
private static final int ITERATION_TIMES = 2;
|
private static final int ITERATION_TIMES = 2;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue