> ### 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).
Robert Toyonaga has updated the pull request incrementally with one additional commit since the last revision: fix bug and add test ------------- Changes: - all: https://git.openjdk.org/jdk/pull/32910/files - new: https://git.openjdk.org/jdk/pull/32910/files/788ced56..6cef9fc1 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=32910&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=32910&range=00-01 Stats: 53 lines in 2 files changed: 52 ins; 0 del; 1 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
