getting ready for ASM 6.2
Vicente Romero
vicente.romero at oracle.com
Fri Jul 27 21:54:53 UTC 2018
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