RFR: 8366455: Move VarHandles.GuardMethodGenerator to execute on build
Chen Liang
liach at openjdk.org
Fri Aug 29 19:18:58 UTC 2025
Currently, java.lang.invoke.VarHandles$GuardMethodGenerator is in a weird state: when VarHandleGuards needs to be updated, we uncomment it, build JDK, run it as a main class, and paste the generated VarHandleGuards class.
This process is complex and error-prone, and having a huge chunk of commented out code is not good for maintenance and verification too.
Looking at how i18n and charsets generate, we can move this generator to the build system, and have VarHandleGuards completely automatically generated like the other VarHandle implementation classes or CharacterData.
<details>
<summary>
Diff from old to new:
</summary>
liach at liach-Precision-5690:~$ git diff --no-index /home/liach/java/jdk-5/build/linux-x64/support/gensrc/java.base/java/lang/invoke/VarHandleGuards.java /home/liach/java/jdk/open/src/java.base/share/classes/java/lang/invoke/VarHandleGuards.java
diff --git a/home/liach/java/jdk-5/build/linux-x64/support/gensrc/java.base/java/lang/invoke/VarHandleGuards.java b/home/liach/java/jdk/open/src/java.base/share/classes/java/lang/invoke/VarHandleGuards.java
index 13ef65b..49408a2 100644
--- a/home/liach/java/jdk-5/build/linux-x64/support/gensrc/java.base/java/lang/invoke/VarHandleGuards.java
+++ b/home/liach/java/jdk/open/src/java.base/share/classes/java/lang/invoke/VarHandleGuards.java
@@ -28,8 +28,7 @@ import jdk.internal.vm.annotation.AOTSafeClassInitializer;
import jdk.internal.vm.annotation.ForceInline;
import jdk.internal.vm.annotation.Hidden;
-// This file is generated by build.tools.methodhandle.VarHandleGuardMethodGenerator.
-// Do not edit!
+// This class is auto-generated by java.lang.invoke.VarHandles$GuardMethodGenerator. Do not edit.
@AOTSafeClassInitializer
final class VarHandleGuards {
</details>
Testing: java/lang/invoke.
-------------
Commit messages:
- Restore order
- 8366455: Move VarHandles.GuardMethodGenerator to execute on build
Changes: https://git.openjdk.org/jdk/pull/27009/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27009&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8366455
Stats: 2197 lines in 5 files changed: 340 ins; 1857 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/27009.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/27009/head:pull/27009
PR: https://git.openjdk.org/jdk/pull/27009
More information about the core-libs-dev
mailing list