From edf0343cfe0f5ec8b563415410ff5c7120d3402b Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 22 Jun 2021 15:26:35 +0200 Subject: [PATCH] Upgrade to ASM master (including early support for Java 18 bytecode) Closes gh-27069 --- .../src/main/java/org/springframework/asm/ClassReader.java | 2 +- .../src/main/java/org/springframework/asm/ClassVisitor.java | 4 ++-- .../src/main/java/org/springframework/asm/Opcodes.java | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/asm/ClassReader.java b/spring-core/src/main/java/org/springframework/asm/ClassReader.java index 56b0d2ea3ae..d53564c2a9a 100644 --- a/spring-core/src/main/java/org/springframework/asm/ClassReader.java +++ b/spring-core/src/main/java/org/springframework/asm/ClassReader.java @@ -194,7 +194,7 @@ public class ClassReader { this.b = classFileBuffer; // Check the class' major_version. This field is after the magic and minor_version fields, which // use 4 and 2 bytes respectively. - if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V17) { + if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V18) { throw new IllegalArgumentException( "Unsupported class file major version " + readShort(classFileOffset + 6)); } diff --git a/spring-core/src/main/java/org/springframework/asm/ClassVisitor.java b/spring-core/src/main/java/org/springframework/asm/ClassVisitor.java index b562dde8c21..b49c3eebce5 100644 --- a/spring-core/src/main/java/org/springframework/asm/ClassVisitor.java +++ b/spring-core/src/main/java/org/springframework/asm/ClassVisitor.java @@ -30,8 +30,8 @@ package org.springframework.asm; /** * A visitor to visit a Java class. The methods of this class must be called in the following order: * {@code visit} [ {@code visitSource} ] [ {@code visitModule} ][ {@code visitNestHost} ][ {@code - * visitPermittedSubclass} ][ {@code visitOuterClass} ] ( {@code visitAnnotation} | {@code - * visitTypeAnnotation} | {@code visitAttribute} )* ( {@code visitNestMember} | {@code + * visitOuterClass} ] ( {@code visitAnnotation} | {@code visitTypeAnnotation} | {@code + * visitAttribute} )* ( {@code visitNestMember} | [ {@code * visitPermittedSubclass} ] | {@code * visitInnerClass} | {@code visitRecordComponent} | {@code visitField} | {@code visitMethod} )* * {@code visitEnd}. * diff --git a/spring-core/src/main/java/org/springframework/asm/Opcodes.java b/spring-core/src/main/java/org/springframework/asm/Opcodes.java index f9cc14315bb..fbd0c4db640 100644 --- a/spring-core/src/main/java/org/springframework/asm/Opcodes.java +++ b/spring-core/src/main/java/org/springframework/asm/Opcodes.java @@ -282,6 +282,7 @@ public interface Opcodes { int V15 = 0 << 16 | 59; int V16 = 0 << 16 | 60; int V17 = 0 << 16 | 61; + int V18 = 0 << 16 | 62; /** * Version flag indicating that the class is using 'preview' features.