getting ready for ASM 6.2
Remi Forax
forax at univ-mlv.fr
Sat Jul 28 09:58:22 UTC 2018
Hi Vicente,
nice to see the integration of ASM to be fully automated.
I've nothing to add :)
Rémi
----- Mail original -----
> De: "Vicente Romero" <vicente.romero at oracle.com>
> À: "amber-dev" <amber-dev at openjdk.java.net>
> Envoyé: Vendredi 27 Juillet 2018 23:54:53
> Objet: getting ready for ASM 6.2
> Hi all,
>
> Now that the integration of the, still experimental, ASM 6.2 version
> into the JDK seems to be closer; I decided to give it a try to see what
> it would take to do it for real when the time comes. Below some notes
> about the process I followed.
>
> Some commands to warm-up:
>
> # creating a dir to hold all what we need:
> mkdir asm-to-jdk
> cd asm-to-jdk
>
> #cloning ASM:
> git clone http://gitlab.ow2.org/asm/asm.git asm
> cd asm
> cd ..
>
> #cloning the jdk
> hg clone http://hg.openjdk.java.net/jdk/jdk jdk_open
> cd jdk_open
> # I nuked the current copy of ASM
> rm -rf src/java.base/share/classes/jdk/internal/org/objectweb/asm
> cd ..
>
> # now cloning some tools to adapt the copyright and package names from
> the ASM format to JDK
> hg clone http://closedjdk.us.oracle.com/code-tools/langtools code-tools
> cd code-tools
> hg pull -u
> cd AsmToJdk/
> export JAVA_HOME=/path/to/jdk1.11.0
> /path/to/apache-ant/bin/ant clean all
> bash ./do-asm.sh ../../asm/ ../../jdk_open/src/
>
> now it started the interesting path, the asm version I obtained after
> invoking the do-asm.sh tool still had many differences, apart from the
> expected ones of course, when compared with the expected format. So I
> started modifying the tool to improve the copyright and to obtain a four
> spaces indentation instead of the two spaces one used by ASM. I redid
> the last step several times till I obtained sources that won't need a
> manual merge to match the JDK format.
>
> That allowed me to obtain a patch to apply on top of JDK. Now with this
> patch I went on and try to obtain a full build of JDK. I realized that
> all the new features are marked deprecated. So I had to go again to
> generated sources, removing whatever deprecated annotation or javadoc
> comment the build was complaining about. After that it was the turn for
> the nasgen tool to complain. After some debug rounds I realized that the
> issue was due to an UnsupportedOperationException due a nasgen not
> setting the ASM_VERSION that understand the experimental features. This
> patch fixed that:
>
> diff -r be7b04898a1c -r 07c9fb188386
> make/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/Main.java
> ---
> a/make/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/Main.java
> Fri Jul 27 10:06:35 2018 -0700
> +++
> b/make/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/Main.java
> Fri Jul 27 13:57:16 2018 -0700
> @@ -43,7 +43,7 @@
> /**
> * ASM version to be used by nasgen tool.
> */
> - public static final int ASM_VERSION = Opcodes.ASM5;
> + public static final int ASM_VERSION = Opcodes.ASM7_EXPERIMENTAL;
>
> private static final boolean DEBUG =
> Boolean.getBoolean("nasgen.debug");
>
> after this the build finished smoothly :) It was a lot of fun, fancy a try?
>
> Thanks,
> Vicente
More information about the amber-dev
mailing list