6788376: allow to ignore unrecognized VM options
Summary: Add new product flag -XX:+IgnoreUnrecognizedVMOptions
Reviewed-by: ysr, xlu
--- a/hotspot/src/share/vm/runtime/arguments.cpp Wed Feb 04 23:17:38 2009 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Thu Feb 05 13:38:52 2009 -0800
@@ -2478,7 +2478,7 @@
vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = i;
- vm_args.ignoreUnrecognized = false;
+ vm_args.ignoreUnrecognized = IgnoreUnrecognizedVMOptions;
if (PrintVMOptions) {
const char* tail;
@@ -2525,13 +2525,12 @@
// If flag "-XX:Flags=flags-file" is used it will be the first option to be processed.
bool settings_file_specified = false;
+ const char* flags_file;
int index;
for (index = 0; index < args->nOptions; index++) {
const JavaVMOption *option = args->options + index;
if (match_option(option, "-XX:Flags=", &tail)) {
- if (!process_settings_file(tail, true, args->ignoreUnrecognized)) {
- return JNI_EINVAL;
- }
+ flags_file = tail;
settings_file_specified = true;
}
if (match_option(option, "-XX:+PrintVMOptions", &tail)) {
@@ -2540,6 +2539,24 @@
if (match_option(option, "-XX:-PrintVMOptions", &tail)) {
PrintVMOptions = false;
}
+ if (match_option(option, "-XX:+IgnoreUnrecognizedVMOptions", &tail)) {
+ IgnoreUnrecognizedVMOptions = true;
+ }
+ if (match_option(option, "-XX:-IgnoreUnrecognizedVMOptions", &tail)) {
+ IgnoreUnrecognizedVMOptions = false;
+ }
+ }
+
+ if (IgnoreUnrecognizedVMOptions) {
+ // uncast const to modify the flag args->ignoreUnrecognized
+ *(jboolean*)(&args->ignoreUnrecognized) = true;
+ }
+
+ // Parse specified settings file
+ if (settings_file_specified) {
+ if (!process_settings_file(flags_file, true, args->ignoreUnrecognized)) {
+ return JNI_EINVAL;
+ }
}
// Parse default .hotspotrc settings file
--- a/hotspot/src/share/vm/runtime/globals.hpp Wed Feb 04 23:17:38 2009 -0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp Thu Feb 05 13:38:52 2009 -0800
@@ -2167,6 +2167,9 @@
product(bool, PrintVMOptions, trueInDebug, \
"print VM flag settings") \
\
+ product(bool, IgnoreUnrecognizedVMOptions, false, \
+ "Ignore unrecognized VM options") \
+ \
diagnostic(bool, SerializeVMOutput, true, \
"Use a mutex to serialize output to tty and hotspot.log") \
\
--- a/hotspot/test/compiler/6775880/Test.java Wed Feb 04 23:17:38 2009 -0800
+++ b/hotspot/test/compiler/6775880/Test.java Thu Feb 05 13:38:52 2009 -0800
@@ -27,7 +27,7 @@
* @bug 6775880
* @summary EA +DeoptimizeALot: assert(mon_info->owner()->is_locked(),"object must be locked now")
* @compile -source 1.4 -target 1.4 Test.java
- * @run main/othervm -server -Xbatch -XX:+DoEscapeAnalysis -XX:+DeoptimizeALot -XX:CompileCommand=exclude,java.lang.AbstractStringBuilder::append Test
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -Xbatch -XX:+DoEscapeAnalysis -XX:+DeoptimizeALot -XX:CompileCommand=exclude,java.lang.AbstractStringBuilder::append Test
*/
public class Test {