On Fri, 29 Aug 2025 19:13:27 GMT, Chen Liang <li...@openjdk.org> wrote:
> 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 new to old (backwards): > </summary> > > > liach@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. I'm ok with this from a build point of view. I think someone in the component team should also review this. Looking again, I'm now guessing that this was kept as a static generation because it was expected to rarely change and someone thought it wasn't worth the build time overhead of dynamically generating the class in every build. Could that be the case? ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/27009#pullrequestreview-3170009282