### Summary When specifying `-XX:UnlockDiagnosticVMOptions` without the necessary +/-, the following error is produced:
$ java -XX:UnlockDiagnosticVMOptions -m jdk.httpserver Error: VM option 'UnlockDiagnosticVMOptions' is diagnostic and must be enabled via -XX:+UnlockDiagnosticVMOptions. Similarly with `-XX:UnlockExperimentalVMOptions`: $ java -XX:UnlockExperimentalVMOptions -m jdk.httpserver Error: VM option 'UnlockExperimentalVMOptions' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions. This recursive complaint about using the unlocker to unlock the unlocker is misleading and probably confusing for users. ### Root cause The problem is that `UnlockDiagnosticVMOptions` is **itself** a _diagnostic_ option. And `UnlockExperimentalVMOptions` is **itself** an _experimental_ option. `Arguments::process_argument` calls `parse_argument` which notices `UnlockDiagnosticVMOptions`/`UnlockExperimentalVMOptions` is missing +/- so leaves the option **unset**. Since the unlocker option is unset, and the unlocker option is itself diagnostic/experiemental, the "must be enabled" error is thrown because it hasn't yet been unlocked. UnlockDiagnosticVMOptions defaults to true in debug, so the problem only manifests in release builds. UnlockExperimentalVMOptions always defaults to false, so the problem manifests in all builds. ### Solution The solution is to treat `UnlockDiagnosticVMOptions` and `UnlockExperimentalVMOptions` as always unlocked. The existing Hotspot code already essentially does this, but this PR formalizes it in `JVMFlag::is_unlocked()`. As an added benefit, this allows for some simplification in other places too where we check the status of flags. --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - Make UnlockExperimentalVMOptions and UnlockDiagnosticVMOptions always unlocked Changes: https://git.openjdk.org/jdk/pull/32910/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=32910&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8392477 Stats: 10 lines in 4 files changed: 3 ins; 1 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/32910.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/32910/head:pull/32910 PR: https://git.openjdk.org/jdk/pull/32910
