On Tue, 1 Jun 2021 09:30:40 GMT, Jaroslav Tulach <github.com+26887752+jaroslavtul...@openjdk.org> wrote:
> There doesn't seem to be much support for the complete changes in #4245. To > get at least something useful from that endeavor I have extracted the test > for existing behavior of `-XX:+PreserveAllAnnotations` and I am offering it > in this pull request without any changes to the JVM behavior. I suggest the following patch for the bug in AnnotationParser: Index: src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java b/src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java --- a/src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java (revision b4371e9bcaa1c8aa394b5eca409c5afc669cc146) +++ b/src/java.base/share/classes/sun/reflect/annotation/AnnotationParser.java (date 1622636986705) @@ -116,6 +116,7 @@ Map<Class<? extends Annotation>, Annotation> result = new LinkedHashMap<Class<? extends Annotation>, Annotation>(); ByteBuffer buf = ByteBuffer.wrap(rawAnnotations); + for (int round = 0; round < 2 && buf.hasRemaining(); round++) { int numAnnotations = buf.getShort() & 0xFFFF; for (int i = 0; i < numAnnotations; i++) { Annotation a = parseAnnotation2(buf, constPool, container, false, selectAnnotationClasses); @@ -128,6 +129,7 @@ } } } + } return result; } ------------- PR: https://git.openjdk.java.net/jdk/pull/4280