src/hotspot/share/runtime/arguments.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/hotspot/share/runtime/arguments.cpp Mon Apr 2 14:11:48 2018
--- new/src/hotspot/share/runtime/arguments.cpp Mon Apr 2 14:11:48 2018
*** 1444,1492 ****
--- 1444,1494 ----
return true;
}
#if INCLUDE_CDS
void Arguments::check_unsupported_dumping_properties() {
assert(DumpSharedSpaces, "this function is only used with -Xshare:dump");
const char* unsupported_properties[] = { "jdk.module.main",
"jdk.module.limitmods",
"jdk.module.path",
+ const char* unsupported_properties[] = { "jdk.module.limitmods",
"jdk.module.upgrade.path",
"jdk.module.patch.0" };
const char* unsupported_options[] = { "-m", // cannot use at dump time
"--limit-modules", // ignored at dump time
"--module-path", // ignored at dump time
"--upgrade-module-path", // ignored at dump time
"--patch-module" // ignored at dump time
+ const char* unsupported_options[] = { "--limit-modules",
+ "--upgrade-module-path",
+ "--patch-module"
};
+ void Arguments::check_unsupported_dumping_properties() {
+ assert(DumpSharedSpaces, "this function is only used with -Xshare:dump");
assert(ARRAY_SIZE(unsupported_properties) == ARRAY_SIZE(unsupported_options), "must be");
! // If a vm option is found in the unsupported_options array with index less than the info_idx,
// vm will exit with an error message. Otherwise, it will print an informational message if
// -Xlog:cds is enabled.
uint info_idx = 1;
! // If a vm option is found in the unsupported_options array, vm will exit with an error message.
SystemProperty* sp = system_properties();
while (sp != NULL) {
for (uint i = 0; i < ARRAY_SIZE(unsupported_properties); i++) {
if (strcmp(sp->key(), unsupported_properties[i]) == 0) {
if (i < info_idx) {
vm_exit_during_initialization(
"Cannot use the following option when dumping the shared archive", unsupported_options[i]);
} else {
log_info(cds)("Info: the %s option is ignored when dumping the shared archive",
unsupported_options[i]);
}
}
}
sp = sp->next();
}
// Check for an exploded module build in use with -Xshare:dump.
if (!has_jimage()) {
vm_exit_during_initialization("Dumping the shared archive is not supported with an exploded module build");
}
}
+
+ bool Arguments::check_unsupported_cds_runtime_properties() {
+ assert(UseSharedSpaces, "this function is only used with -Xshare:{on,auto}");
+ assert(ARRAY_SIZE(unsupported_properties) == ARRAY_SIZE(unsupported_options), "must be");
+ for (uint i = 0; i < ARRAY_SIZE(unsupported_properties); i++) {
+ if (get_property(unsupported_properties[i]) != NULL) {
+ if (RequireSharedSpaces) {
+ warning("CDS is disabled when the %s option is specified.", unsupported_options[i]);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
#endif
//===========================================================================================================
// Setting int/mixed/comp mode flags
*** 3408,3417 ****
--- 3410,3422 ----
UseBiasedLocking = false;
}
if (UseSharedSpaces && patch_mod_javabase) {
no_shared_spaces("CDS is disabled when " JAVA_BASE_NAME " module is patched.");
}
+ if (UseSharedSpaces && !DumpSharedSpaces && check_unsupported_cds_runtime_properties()) {
+ FLAG_SET_DEFAULT(UseSharedSpaces, false);
+ }
#endif
#ifndef CAN_SHOW_REGISTERS_ON_ASSERT
UNSUPPORTED_OPTION(ShowRegistersOnAssert);
#endif // CAN_SHOW_REGISTERS_ON_ASSERT
src/hotspot/share/runtime/arguments.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File