RFR: JDK-8241627: Updating ASM to 8.0 for JDK 15

Paul Sandoz paul.sandoz at oracle.com
Tue Apr 14 18:05:57 UTC 2020


Hi Vicente,

Looks ok from the changes required to integrate into the JDK.

Maybe the @SuppressWarnings warning annotations could be upstreamed?

Paul.


> On Apr 13, 2020, at 8:05 AM, Vicente Romero <vicente.romero at oracle.com> wrote:
> 
> Hi all,
> 
> Please review this patch that updates the ASM version to appear in JDK15 (from 7.0 to 8.0). Version 8.0 is compatible with JDK14 plus it has several experimental APIs to cover records and sealed types. We have also updated a number of tests (mostly record oriented tests) to use the updated APIs. Thanks to Igor Ignatyev for his help in particular for finding the source and fixing an issue that was provoking a failure at test:
> 
> open/test/jdk/jdk/jfr/jvm/TestLogOutput.java
> 
> This is the only substantial change that makes our copy of ASM different from the original, apart from several @SuppressWarnings that were added for the build to pass. The patch from Igor is this:
> 
> diff -r b2ca6a37c16b src/java.base/share/classes/jdk/internal/org/objectweb/asm/Constants.java
> --- a/src/java.base/share/classes/jdk/internal/org/objectweb/asm/Constants.java Fri Apr 10 07:04:27 2020 -0700
> +++ b/src/java.base/share/classes/jdk/internal/org/objectweb/asm/Constants.java Fri Apr 10 17:14:59 2020 -0700
> @@ -222,15 +222,15 @@
>      }
> 
>      static boolean isWhitelisted(final String internalName) {
> -        if (!internalName.startsWith("org/objectweb/asm/")) {
> +        if (!internalName.startsWith("jdk/internal/org/objectweb/asm/")) {
>              return false;
>          }
>          String member = "(Annotation|Class|Field|Method|Module|RecordComponent|Signature)";
>          return internalName.contains("Test$")
>                  || Pattern.matches(
> -                        "org/objectweb/asm/util/Trace" + member + "Visitor(\\$.*)?", internalName)
> + "jdk/internal/org/objectweb/asm/util/Trace" + member + "Visitor(\\$.*)?", internalName)
>                  || Pattern.matches(
> -                        "org/objectweb/asm/util/Check" + member + "Adapter(\\$.*)?", internalName);
> + "jdk/internal/org/objectweb/asm/util/Check" + member + "Adapter(\\$.*)?", internalName);
>      }
> 
>      static void checkIsPreview(final InputStream classInputStream) {
> 
> 
> And it is basically adapting our copy to the different package prefix we use compared to the original ASM code. I have prepared two webrevs one at [1] which has the full change and one at [2] for which I have removed a lot of javadoc from the full webrev for reviewers that prefer less javadoc.
> 
> Thanks,
> Vicente
> 
> PS, thanks to Remi for fixing in a very short time a bug I found in ASM related to the parsing of Record attributes
> 
> [1] http://cr.openjdk.java.net/~vromero/8241627/full/webrev.01/
> [2] http://cr.openjdk.java.net/~vromero/8241627/no_javadoc/webrev.01/
> 



More information about the core-libs-dev mailing list