Flags passed via a settings file (`.hotspotrc`, or `-XX:Flags=my-file`) do not 
have the `-XX:` prefix like they would have if passed as command-line args. 
`JVM_GetVmArguments` then prints these flags also without the prefix, along 
with command-line flags that _are_ prefixed.

However, users of `JVM_GetVmArguments` expect the arguments to be in a format 
that they can pass as command-line args, for example [in CDS 
static_dump](https://github.com/openjdk/jdk/blob/63f00fff921ed4ac0f595a0a013d399700433a2c/src/java.base/share/classes/jdk/internal/misc/CDS.java#L329-L338)
 - CDS static_dump currently *does not work* if the main VM uses flags from a 
settings file.

So, always add the `-XX:` prefix to flags from settings files in 
`JVM_GetVmArguments`. Updated existing test to cover this behaviour.

I looked for existing users of `JVM_GetVmArguments` and they either seem like 
they'll benefit from this change (CDS, JMH via 
`RuntimeMXBean.getInputArguments()`) or they won't care.

**Testing**

* Updated the existing InputArgument test with a case that verifies the new 
behaviour.
* Confirmed that CDS static_dump and JMH now work on a VM with flags from a 
file.

-------------

Commit messages:
 - 8378110: Add -XX: prefix to settings-file flags in 
RuntimeMXBean.getInputArguments()

Changes: https://git.openjdk.org/jdk/pull/29793/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29793&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8378110
  Stats: 50 lines in 2 files changed: 37 ins; 5 del; 8 mod
  Patch: https://git.openjdk.org/jdk/pull/29793.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29793/head:pull/29793

PR: https://git.openjdk.org/jdk/pull/29793

Reply via email to