Switched compatibility to ASM7
Lots of files used ASM in ASM6 compatibility, I switched to ASM7.
I introduced an ASM_VERSION internal option which I set to ASM7 and
replaced most references to ASM6 constant to ASM_VERSION. In a few
places using ASM_VERSION was introducing new dependencies so
I just used directly the ASM7 constant.
Bug: 130529338
Change-Id: Ie8bbeb36701198dc25fb2307e5467cb2079f315c
diff --git a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
index 7a3224b..4aa5b7c 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -7,7 +7,7 @@
import static org.objectweb.asm.ClassReader.SKIP_DEBUG;
import static org.objectweb.asm.ClassReader.SKIP_FRAMES;
import static org.objectweb.asm.Opcodes.ACC_DEPRECATED;
-import static org.objectweb.asm.Opcodes.ASM6;
+import static com.android.tools.r8.utils.InternalOptions.ASM_VERSION;
import com.android.tools.r8.ProgramResource.Kind;
import com.android.tools.r8.dex.Constants;
@@ -199,7 +199,7 @@
byte[] classCache,
JarApplicationReader application,
Consumer<DexClass> classConsumer) {
- super(ASM6);
+ super(ASM_VERSION);
this.origin = origin;
this.classKind = classKind;
this.classConsumer = classConsumer;
@@ -456,7 +456,7 @@
public CreateFieldVisitor(CreateDexClassVisitor parent,
int access, String name, String desc, String signature, Object value) {
- super(ASM6);
+ super(ASM_VERSION);
this.parent = parent;
this.access = access;
this.name = name;
@@ -568,7 +568,7 @@
public CreateMethodVisitor(int access, String name, String desc, String signature,
String[] exceptions, CreateDexClassVisitor parent) {
- super(ASM6);
+ super(ASM_VERSION);
this.name = name;
this.parent = parent;
this.method = parent.application.getMethod(parent.type, name, desc);
@@ -766,7 +766,7 @@
public CreateAnnotationVisitor(
JarApplicationReader application, BiConsumer<List<DexString>, List<DexValue>> onVisitEnd) {
- super(ASM6);
+ super(ASM_VERSION);
this.application = application;
this.onVisitEnd = onVisitEnd;
}
diff --git a/src/main/java/com/android/tools/r8/graph/JarCode.java b/src/main/java/com/android/tools/r8/graph/JarCode.java
index 3fc15e8..53aa5da 100644
--- a/src/main/java/com/android/tools/r8/graph/JarCode.java
+++ b/src/main/java/com/android/tools/r8/graph/JarCode.java
@@ -364,7 +364,7 @@
private final boolean useJsrInliner;
public SecondVisitor(BiFunction<String, String, JarCode> codeLocator, boolean useJsrInliner) {
- super(Opcodes.ASM6);
+ super(InternalOptions.ASM_VERSION);
this.codeLocator = codeLocator;
this.useJsrInliner = useJsrInliner;
}
@@ -375,7 +375,7 @@
MethodNode node =
useJsrInliner
? new JSRInlinerAdapter(null, access, name, desc, signature, exceptions)
- : new MethodNode(Opcodes.ASM6, access, name, desc, signature, exceptions);
+ : new MethodNode(InternalOptions.ASM_VERSION, access, name, desc, signature, exceptions);
JarCode code = null;
MethodAccessFlags flags = JarClassFileReader.createMethodAccessFlags(name, access);
if (!flags.isAbstract() && !flags.isNative()) {
diff --git a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
index d1e1c5c..c849750 100644
--- a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
@@ -58,6 +58,7 @@
import com.android.tools.r8.ir.code.ValueType;
import com.android.tools.r8.naming.ClassNameMapper;
import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.utils.InternalOptions;
import it.unimi.dsi.fastutil.ints.Int2ReferenceAVLTreeMap;
import it.unimi.dsi.fastutil.ints.Int2ReferenceSortedMap;
import java.util.ArrayList;
@@ -218,7 +219,7 @@
ClassCodeVisitor(
ReparseContext context, JarApplicationReader application, boolean useJsrInliner) {
- super(Opcodes.ASM6);
+ super(InternalOptions.ASM_VERSION);
this.context = context;
this.application = application;
this.usrJsrInliner = useJsrInliner;
@@ -256,7 +257,7 @@
private DexMethod method;
MethodCodeVisitor(JarApplicationReader application, LazyCfCode code) {
- super(Opcodes.ASM6);
+ super(InternalOptions.ASM_VERSION);
this.application = application;
this.factory = application.getFactory();
this.method = code.method;
diff --git a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
index 6a9e056..dabfd6c 100644
--- a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.jar;
-import static org.objectweb.asm.Opcodes.ASM6;
+import static com.android.tools.r8.utils.InternalOptions.ASM_VERSION;
import com.android.tools.r8.ByteDataView;
import com.android.tools.r8.ClassFileConsumer;
@@ -410,8 +410,8 @@
public static String printCf(byte[] result) {
ClassReader reader = new ClassReader(result);
- ClassNode node = new ClassNode(ASM6);
- reader.accept(node, ASM6);
+ ClassNode node = new ClassNode(ASM_VERSION);
+ reader.accept(node, ASM_VERSION);
StringWriter writer = new StringWriter();
for (MethodNode method : node.methods) {
writer.append(method.name).append(method.desc).append('\n');
diff --git a/src/main/java/com/android/tools/r8/jar/InliningConstraintVisitor.java b/src/main/java/com/android/tools/r8/jar/InliningConstraintVisitor.java
index c2efa88..d560332 100644
--- a/src/main/java/com/android/tools/r8/jar/InliningConstraintVisitor.java
+++ b/src/main/java/com/android/tools/r8/jar/InliningConstraintVisitor.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.jar;
-import static org.objectweb.asm.Opcodes.ASM6;
+import static com.android.tools.r8.utils.InternalOptions.ASM_VERSION;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.Unreachable;
@@ -51,7 +51,7 @@
GraphLense graphLense,
DexEncodedMethod method,
DexType invocationContext) {
- super(ASM6);
+ super(ASM_VERSION);
assert graphLense.isContextFreeForMethods();
this.application = application;
this.appView = appView;
diff --git a/src/main/java/com/android/tools/r8/jar/JarArgumentUseVisitor.java b/src/main/java/com/android/tools/r8/jar/JarArgumentUseVisitor.java
index 9bcb635..429c1eb 100644
--- a/src/main/java/com/android/tools/r8/jar/JarArgumentUseVisitor.java
+++ b/src/main/java/com/android/tools/r8/jar/JarArgumentUseVisitor.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.jar;
import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.ASM6;
+import static com.android.tools.r8.utils.InternalOptions.ASM_VERSION;
import static org.objectweb.asm.Opcodes.DLOAD;
import static org.objectweb.asm.Opcodes.FLOAD;
import static org.objectweb.asm.Opcodes.ILOAD;
@@ -25,7 +25,7 @@
private final int arguments;
public JarArgumentUseVisitor(DexEncodedMethod method, ArgumentUse registry) {
- super(ASM6);
+ super(ASM_VERSION);
this.registry = registry;
DexProto proto = method.method.proto;
diff --git a/src/main/java/com/android/tools/r8/jar/JarRegisterEffectsVisitor.java b/src/main/java/com/android/tools/r8/jar/JarRegisterEffectsVisitor.java
index b445efc..991b861 100644
--- a/src/main/java/com/android/tools/r8/jar/JarRegisterEffectsVisitor.java
+++ b/src/main/java/com/android/tools/r8/jar/JarRegisterEffectsVisitor.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.jar;
-import static org.objectweb.asm.Opcodes.ASM6;
+import static com.android.tools.r8.utils.InternalOptions.ASM_VERSION;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.Unreachable;
@@ -27,7 +27,7 @@
public JarRegisterEffectsVisitor(DexType clazz, UseRegistry registry,
JarApplicationReader application) {
- super(ASM6);
+ super(ASM_VERSION);
this.clazz = clazz;
this.registry = registry;
this.application = application;
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 8df2e21..3a5bd94 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -39,6 +39,7 @@
import java.util.Set;
import java.util.TreeSet;
import java.util.function.Consumer;
+import org.objectweb.asm.Opcodes;
public class InternalOptions {
@@ -51,6 +52,8 @@
ON
}
+ public static final int ASM_VERSION = Opcodes.ASM7;
+
public final DexItemFactory itemFactory;
public ProguardConfiguration getProguardConfiguration() {
diff --git a/src/test/examplesAndroidO/invokecustom/TestGenerator.java b/src/test/examplesAndroidO/invokecustom/TestGenerator.java
index 05a6f28..9964ed0 100644
--- a/src/test/examplesAndroidO/invokecustom/TestGenerator.java
+++ b/src/test/examplesAndroidO/invokecustom/TestGenerator.java
@@ -41,7 +41,7 @@
ClassReader cr = new ClassReader(input);
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
cr.accept(
- new ClassVisitor(Opcodes.ASM6, cw) {
+ new ClassVisitor(Opcodes.ASM7, cw) {
@Override
public void visitEnd() {
generateMethodTest1(cw);
diff --git a/src/test/examplesAndroidO/invokecustom2/TestGenerator.java b/src/test/examplesAndroidO/invokecustom2/TestGenerator.java
index 9bbc03a..377084e 100644
--- a/src/test/examplesAndroidO/invokecustom2/TestGenerator.java
+++ b/src/test/examplesAndroidO/invokecustom2/TestGenerator.java
@@ -42,7 +42,7 @@
ClassReader cr = new ClassReader(input);
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
cr.accept(
- new ClassVisitor(Opcodes.ASM6, cw) {
+ new ClassVisitor(Opcodes.ASM7, cw) {
@Override
public void visitEnd() {
generateMethodTest1(cw);
diff --git a/src/test/examplesAndroidO/stringconcat/TestGenerator.java b/src/test/examplesAndroidO/stringconcat/TestGenerator.java
index 12e5004..72bdfbf 100644
--- a/src/test/examplesAndroidO/stringconcat/TestGenerator.java
+++ b/src/test/examplesAndroidO/stringconcat/TestGenerator.java
@@ -51,12 +51,12 @@
ClassReader cr = new ClassReader(input);
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
cr.accept(
- new ClassVisitor(Opcodes.ASM6, cw) {
+ new ClassVisitor(Opcodes.ASM7, cw) {
@Override
public MethodVisitor visitMethod(int access,
final String methodName, String desc, String signature, String[] exceptions) {
MethodVisitor mv = super.visitMethod(access, methodName, desc, signature, exceptions);
- return new MethodVisitor(Opcodes.ASM6, mv) {
+ return new MethodVisitor(Opcodes.ASM7, mv) {
private List<Object> recentConstants = new ArrayList<>();
@Override
diff --git a/src/test/examplesAndroidP/invokecustom/TestGenerator.java b/src/test/examplesAndroidP/invokecustom/TestGenerator.java
index 495f080..b08441c 100644
--- a/src/test/examplesAndroidP/invokecustom/TestGenerator.java
+++ b/src/test/examplesAndroidP/invokecustom/TestGenerator.java
@@ -41,7 +41,7 @@
ClassReader cr = new ClassReader(inputStream);
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
cr.accept(
- new ClassVisitor(Opcodes.ASM6, cw) {
+ new ClassVisitor(Opcodes.ASM7, cw) {
@Override
public void visitEnd() {
generateMethodTest1(cw);
diff --git a/src/test/java/com/android/tools/r8/CfFrontendExamplesTest.java b/src/test/java/com/android/tools/r8/CfFrontendExamplesTest.java
index a6578ee..fbdc6fc 100644
--- a/src/test/java/com/android/tools/r8/CfFrontendExamplesTest.java
+++ b/src/test/java/com/android/tools/r8/CfFrontendExamplesTest.java
@@ -8,6 +8,7 @@
import static org.junit.Assert.assertEquals;
import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.io.PrintWriter;
@@ -396,7 +397,7 @@
private final List<Part> parts = new ArrayList<>();
ASMifierSorted() {
- super(Opcodes.ASM6, "cw", 0);
+ super(InternalOptions.ASM_VERSION, "cw", 0);
}
@Override
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index 0ad4f8e..bd57729 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -7,7 +7,7 @@
import static com.google.common.collect.Lists.cartesianProduct;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.objectweb.asm.Opcodes.ASM6;
+import static com.android.tools.r8.utils.InternalOptions.ASM_VERSION;
import com.android.tools.r8.DataResourceProvider.Visitor;
import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
@@ -894,7 +894,7 @@
private String className;
private ClassNameExtractor() {
- super(ASM6);
+ super(ASM_VERSION);
}
@Override
diff --git a/src/test/java/com/android/tools/r8/cf/MethodHandleDump.java b/src/test/java/com/android/tools/r8/cf/MethodHandleDump.java
index 9adf616..f400169 100644
--- a/src/test/java/com/android/tools/r8/cf/MethodHandleDump.java
+++ b/src/test/java/com/android/tools/r8/cf/MethodHandleDump.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.cf;
+import com.android.tools.r8.utils.InternalOptions;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMap.Builder;
import org.objectweb.asm.ClassReader;
@@ -87,7 +88,7 @@
ClassReader cr = new ClassReader(input);
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
cr.accept(
- new ClassVisitor(ASM6, cw) {
+ new ClassVisitor(InternalOptions.ASM_VERSION, cw) {
@Override
public MethodVisitor visitMethod(
diff --git a/src/test/java/com/android/tools/r8/desugaring/interfacemethods/InterfaceMethodDesugaringTests.java b/src/test/java/com/android/tools/r8/desugaring/interfacemethods/InterfaceMethodDesugaringTests.java
index 3674108..a6ee6a5 100644
--- a/src/test/java/com/android/tools/r8/desugaring/interfacemethods/InterfaceMethodDesugaringTests.java
+++ b/src/test/java/com/android/tools/r8/desugaring/interfacemethods/InterfaceMethodDesugaringTests.java
@@ -22,6 +22,7 @@
import com.android.tools.r8.desugaring.interfacemethods.static0.TestMainStatic0;
import com.android.tools.r8.desugaring.interfacemethods.static1.TestMainStatic1;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.InternalOptions;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -183,12 +184,12 @@
ClassReader cr = new ClassReader(input);
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
cr.accept(
- new ClassVisitor(Opcodes.ASM6, cw) {
+ new ClassVisitor(InternalOptions.ASM_VERSION, cw) {
@Override
public MethodVisitor visitMethod(int access, String name,
String desc, String signature, String[] exceptions) {
MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions);
- return new MethodVisitor(Opcodes.ASM6, visitor) {
+ return new MethodVisitor(InternalOptions.ASM_VERSION, visitor) {
@Override
public void visitMethodInsn(
int opcode, String owner, String name, String desc, boolean itf) {
diff --git a/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java b/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
index ac48680..a6fd390 100644
--- a/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
+++ b/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
@@ -14,6 +14,7 @@
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.AndroidAppConsumers;
+import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.codeinspector.AnnotationSubject;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -144,7 +145,7 @@
throws IOException, ExecutionException {
ClassReader classReader = new ClassReader(new FileInputStream(inputPath.toFile()));
ReadSourceDebugExtensionAttribute sourceDebugExtensionReader =
- new ReadSourceDebugExtensionAttribute(Opcodes.ASM6, null);
+ new ReadSourceDebugExtensionAttribute(InternalOptions.ASM_VERSION, null);
classReader.accept(sourceDebugExtensionReader, 0);
CodeInspector codeInspector = new CodeInspector(androidApp);
diff --git a/src/test/java/com/android/tools/r8/kotlin/AsmUtils.java b/src/test/java/com/android/tools/r8/kotlin/AsmUtils.java
index 7b7abcb..b4a9b24 100644
--- a/src/test/java/com/android/tools/r8/kotlin/AsmUtils.java
+++ b/src/test/java/com/android/tools/r8/kotlin/AsmUtils.java
@@ -5,6 +5,7 @@
package com.android.tools.r8.kotlin;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.InternalOptions;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Files;
@@ -46,7 +47,7 @@
public boolean foundMethod = false;
public MethodFinder(String methodName, String methodDescriptor) {
- super(Opcodes.ASM6);
+ super(InternalOptions.ASM_VERSION);
this.methodName = methodName;
this.methodDescriptor = methodDescriptor;
}
@@ -77,7 +78,7 @@
public boolean foundField = false;
public FieldFinder(String fieldName, String fieldType) {
- super(Opcodes.ASM6);
+ super(InternalOptions.ASM_VERSION);
this.fieldName = fieldName;
this.fieldDescriptor = DescriptorUtils.javaTypeToDescriptor(fieldType);
}
diff --git a/src/test/java/com/android/tools/r8/rewrite/assertions/RemoveAssertionsTest.java b/src/test/java/com/android/tools/r8/rewrite/assertions/RemoveAssertionsTest.java
index fac04f0..df88a4e 100644
--- a/src/test/java/com/android/tools/r8/rewrite/assertions/RemoveAssertionsTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/assertions/RemoveAssertionsTest.java
@@ -15,6 +15,7 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.naming.MemberNaming.MethodSignature;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -75,7 +76,7 @@
*/
class AssertionEnablerClassAdapter extends ClassVisitor {
AssertionEnablerClassAdapter(ClassVisitor visitor) {
- super(Opcodes.ASM6, visitor);
+ super(InternalOptions.ASM_VERSION, visitor);
}
@Override
diff --git a/src/test/java/com/android/tools/r8/shaking/examples/InliningClassVersionTest.java b/src/test/java/com/android/tools/r8/shaking/examples/InliningClassVersionTest.java
index 1197c31..8cb9074 100644
--- a/src/test/java/com/android/tools/r8/shaking/examples/InliningClassVersionTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/examples/InliningClassVersionTest.java
@@ -16,6 +16,7 @@
import com.android.tools.r8.ToolHelper.ProcessResult;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.InternalOptions;
import com.google.common.io.ByteStreams;
import java.nio.file.Path;
import java.util.Collections;
@@ -49,7 +50,7 @@
private final int version;
DowngradeVisitor(ClassVisitor cv, int version) {
- super(Opcodes.ASM6, cv);
+ super(InternalOptions.ASM_VERSION, cv);
this.version = version;
}
@@ -96,7 +97,7 @@
private int version = -1;
private ClassVersionReader() {
- super(Opcodes.ASM6);
+ super(InternalOptions.ASM_VERSION);
}
@Override