Description
Harmony launcher instructs the JVM to discard any unrecognized argument silently, this hides incorrectly formed command lines and can lead to tests passing (e.g. those that contain -Xcompressedrefs) when they should fail. To see the problem simply add an unrecognized VM option to the command line, e.g.
Command: '.\java -XthisShouldBarf -version'
` Expected Output:
Unrecognized option: -XthisShouldBarf
Could not create the Java virtual machine.
Actual Output:
Apache Harmony Launcher : (c) Copyright 1991, 2010 The Apache Software Foundation or its licensors,as applicable.
java version "1.6.0"
Harmony Virtual Machine Element (20100920_64951)
IBM J9 VM (2.6)
IBM J9 2.6 Windows XP x86-32 (JIT enabled, AOT enabled)
J9VM - R26_head_20100917_1044_B64808
JIT - dev_20100903_16914
GC - R26_head_20100916_1755_B64769
J9CL - 20100920_64951
Harmony - Unknow
It can be fixed by changing the argument #6 from JNI_TRUE to JNI_FALSE in lancher's calling
invocation
(PORTLIB, argc, argv, handle, JNI_VERSION_1_4, JNI_TRUE, mainClass,
classArg, propertiesFileName, isStandaloneJar, vmdllsubdir, versionFlag);
This argument is to inidicate JVM whether should ignore any unrecognized option.
This change will only affect IBM JVM because it's sensitive to this argument.
While DRLVM will not be affected because it doesn't use this option(passing JNI_TRUE or JNI_FALSE will have same effect, DRLVM will always fail on any unrecognized option)