diff options
author | Tobias Thierer <tobiast@google.com> | 2017-08-07 20:10:30 +0100 |
---|---|---|
committer | Tobias Thierer <tobiast@google.com> | 2017-08-08 22:51:35 +0100 |
commit | 9b21f60f97abaa4af6d1385182f7735502b75fd3 (patch) | |
tree | 526f2669c3420b85ae6890f1e2911cf325fa0ce7 | |
parent | 1b3eed8a1b34f2470bb11932b6d30a49111aac1e (diff) | |
download | desugar-9b21f60f97abaa4af6d1385182f7735502b75fd3.tar.gz |
Parse version 53 class files built from language level 8 sources.android-o-iot-preview-5o-iot-preview-5
Let Desugar request API level ASM6, now that Desugar in AOSP uses
asm-6.0_BETA (since commit b16be9a0994ff8c0c3614774449001bed9fa5e39).
This CL is a local patch; upstream desugar is still using ASM 5
(see bug 38177569).
This is required in order to parse version 53 class files.
ASM 6.0's classVisitor.visitModule() throws RuntimeException
if the requested API version is < ASM6.
This CL allows version 53 (OpenJDK 9) class files compiled from
.java source files in language level 8 to be read; it doesn't
add any support for new language level 9 features, e.g. it
doesn't add any custom handling for modules
(ClassVisitor.visitModule()) that might occur in such language
level 9 source files.
This CL was created by a simple search&replace for ASM5 -> ASM6
across the Desugar sources.
Test: Treehugger.
Bug: 64447547
Change-Id: I73e1aced997bb04f04b3517d3585f0e5dfbaeb91
11 files changed, 41 insertions, 41 deletions
diff --git a/java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java b/java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java index 85c39ac..c7b4d78 100644 --- a/java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java +++ b/java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java @@ -132,7 +132,7 @@ class CoreLibraryRewriter { private final ClassWriter writer; UnprefixingClassWriter(int flags) { - super(Opcodes.ASM5); + super(Opcodes.ASM6); this.writer = new ClassWriter(flags); this.cv = this.writer; if (prefix.length() != 0) { diff --git a/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java b/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java index d7d46a1..9b20c9d 100644 --- a/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java +++ b/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java @@ -57,7 +57,7 @@ public class DefaultMethodClassFixer extends ClassVisitor { ClassReaderFactory classpath, ClassReaderFactory bootclasspath, ClassLoader targetLoader) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); this.classpath = classpath; this.bootclasspath = bootclasspath; this.targetLoader = targetLoader; @@ -380,7 +380,7 @@ public class DefaultMethodClassFixer extends ClassVisitor { private String interfaceName; public DefaultMethodStubber() { - super(Opcodes.ASM5); + super(Opcodes.ASM6); } @Override @@ -457,7 +457,7 @@ public class DefaultMethodClassFixer extends ClassVisitor { private boolean found; public DefaultMethodFinder() { - super(Opcodes.ASM5); + super(Opcodes.ASM6); } @Override @@ -499,7 +499,7 @@ public class DefaultMethodClassFixer extends ClassVisitor { private class InstanceMethodRecorder extends ClassVisitor { public InstanceMethodRecorder() { - super(Opcodes.ASM5); + super(Opcodes.ASM6); } @Override @@ -535,7 +535,7 @@ public class DefaultMethodClassFixer extends ClassVisitor { private boolean hasDefaultMethods; public InterfaceInitializationNecessityDetector(String internalName) { - super(Opcodes.ASM5); + super(Opcodes.ASM6); this.internalName = internalName; } @@ -569,7 +569,7 @@ public class DefaultMethodClassFixer extends ClassVisitor { hasDefaultMethods = isNonBridgeDefaultMethod(access); } if ("<clinit>".equals(name)) { - return new MethodVisitor(Opcodes.ASM5) { + return new MethodVisitor(Opcodes.ASM6) { @Override public void visitFieldInsn(int opcode, String owner, String name, String desc) { if (opcode == Opcodes.PUTSTATIC && internalName.equals(owner)) { diff --git a/java/com/google/devtools/build/android/desugar/HeaderClassLoader.java b/java/com/google/devtools/build/android/desugar/HeaderClassLoader.java index 5be41cf..0a757bf 100644 --- a/java/com/google/devtools/build/android/desugar/HeaderClassLoader.java +++ b/java/com/google/devtools/build/android/desugar/HeaderClassLoader.java @@ -86,7 +86,7 @@ class HeaderClassLoader extends ClassLoader { private String internalName; public NonPrimitiveFieldCollector() { - super(Opcodes.ASM5); + super(Opcodes.ASM6); } @Override @@ -131,7 +131,7 @@ class HeaderClassLoader extends ClassLoader { private final ImmutableList<FieldInfo> interfaceFields; public CodeStubber(ClassVisitor cv, ImmutableList<FieldInfo> interfaceFields) { - super(Opcodes.ASM5, cv); + super(Opcodes.ASM6, cv); this.interfaceFields = interfaceFields; } @@ -177,7 +177,7 @@ class HeaderClassLoader extends ClassLoader { public InterfaceInitializerEraser( MethodVisitor mv, String internalName, ImmutableList<FieldInfo> interfaceFields) { - super(Opcodes.ASM5); + super(Opcodes.ASM6); dest = mv; this.interfaceFields = interfaceFields; } @@ -208,7 +208,7 @@ class HeaderClassLoader extends ClassLoader { private boolean hasCode = false; public BodyStubber(MethodVisitor mv) { - super(Opcodes.ASM5, mv); + super(Opcodes.ASM6, mv); } @Override diff --git a/java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java b/java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java index f7621df..ca8af0e 100644 --- a/java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java +++ b/java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java @@ -55,7 +55,7 @@ class InterfaceDesugaring extends ClassVisitor { public InterfaceDesugaring( ClassVisitor dest, ClassReaderFactory bootclasspath, GeneratedClassStore store) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); this.bootclasspath = bootclasspath; this.store = store; } @@ -250,7 +250,7 @@ class InterfaceDesugaring extends ClassVisitor { private class InterfaceFieldWriteCollector extends MethodVisitor { public InterfaceFieldWriteCollector(MethodVisitor mv) { - super(Opcodes.ASM5, mv); + super(Opcodes.ASM6, mv); } @Override @@ -282,7 +282,7 @@ class InterfaceDesugaring extends ClassVisitor { public InterfaceInvocationRewriter( MethodVisitor dest, String internalName, ClassReaderFactory bootclasspath) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); this.internalName = internalName; this.bootclasspath = bootclasspath; } @@ -351,7 +351,7 @@ class InterfaceDesugaring extends ClassVisitor { private final MethodVisitor annotationOnlyDest; public MultiplexAnnotations(@Nullable MethodVisitor dest, MethodVisitor annotationOnlyDest) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); this.annotationOnlyDest = annotationOnlyDest; } @@ -396,7 +396,7 @@ class InterfaceDesugaring extends ClassVisitor { public MultiplexAnnotationVisitor( @Nullable AnnotationVisitor dest, AnnotationVisitor... moreDestinations) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); this.moreDestinations = moreDestinations; } diff --git a/java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java b/java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java index ed65080..5cf70d7 100644 --- a/java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java +++ b/java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java @@ -31,7 +31,7 @@ public class InvokeDynamicLambdaMethodCollector extends ClassVisitor { ImmutableSet.builder(); public InvokeDynamicLambdaMethodCollector() { - super(Opcodes.ASM5); + super(Opcodes.ASM6); } @Override @@ -44,7 +44,7 @@ public class InvokeDynamicLambdaMethodCollector extends ClassVisitor { private class LambdaMethodCollector extends MethodVisitor { public LambdaMethodCollector(MethodVisitor dest) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); } @Override diff --git a/java/com/google/devtools/build/android/desugar/Java7Compatibility.java b/java/com/google/devtools/build/android/desugar/Java7Compatibility.java index 55f82b3..51efe29 100644 --- a/java/com/google/devtools/build/android/desugar/Java7Compatibility.java +++ b/java/com/google/devtools/build/android/desugar/Java7Compatibility.java @@ -38,7 +38,7 @@ public class Java7Compatibility extends ClassVisitor { private String internalName; public Java7Compatibility(ClassVisitor cv, ClassReaderFactory factory) { - super(Opcodes.ASM5, cv); + super(Opcodes.ASM6, cv); this.factory = factory; } @@ -99,7 +99,7 @@ public class Java7Compatibility extends ClassVisitor { private class InlineJacocoInit extends MethodVisitor { public InlineJacocoInit(MethodVisitor dest) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); } @Override @@ -124,7 +124,7 @@ public class Java7Compatibility extends ClassVisitor { private int copied = 0; public InlineOneMethod(String methodName, MethodVisitor dest) { - super(Opcodes.ASM5); + super(Opcodes.ASM6); this.methodName = methodName; this.dest = dest; } @@ -158,7 +158,7 @@ public class Java7Compatibility extends ClassVisitor { public InlineMethodBody(MethodVisitor dest) { // We'll set the destination visitor in visitCode() to reduce the risk of copying anything // we didn't mean to copy - super(Opcodes.ASM5, (MethodVisitor) null); + super(Opcodes.ASM6, (MethodVisitor) null); this.dest = dest; } diff --git a/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java b/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java index 630559e..fb05bcb 100644 --- a/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java +++ b/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java @@ -71,7 +71,7 @@ class LambdaClassFixer extends ClassVisitor { ImmutableSet<String> interfaceLambdaMethods, boolean allowDefaultMethods, boolean copyBridgeMethods) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); checkArgument(!allowDefaultMethods || interfaceLambdaMethods.isEmpty()); checkArgument(allowDefaultMethods || copyBridgeMethods); this.lambdaInfo = lambdaInfo; @@ -240,7 +240,7 @@ class LambdaClassFixer extends ClassVisitor { /** Rewriter for methods in generated lambda classes. */ private class LambdaClassMethodRewriter extends MethodVisitor { public LambdaClassMethodRewriter(MethodVisitor dest) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); } @Override @@ -300,7 +300,7 @@ class LambdaClassFixer extends ClassVisitor { private static class LambdaClassInvokeSpecialRewriter extends MethodVisitor { public LambdaClassInvokeSpecialRewriter(MethodVisitor dest) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); } @Override @@ -325,7 +325,7 @@ class LambdaClassFixer extends ClassVisitor { public CopyBridgeMethods() { // No delegate visitor; instead we'll add methods to the outer class's delegate where needed - super(Opcodes.ASM5); + super(Opcodes.ASM6); } @Override @@ -370,7 +370,7 @@ class LambdaClassFixer extends ClassVisitor { public CopyOneMethod(String methodName) { // No delegate visitor; instead we'll add methods to the outer class's delegate where needed - super(Opcodes.ASM5); + super(Opcodes.ASM6); checkState(!allowDefaultMethods, "Couldn't copy interface lambda bodies"); this.methodName = methodName; } @@ -415,7 +415,7 @@ class LambdaClassFixer extends ClassVisitor { */ private static class AvoidJacocoInit extends MethodVisitor { public AvoidJacocoInit(MethodVisitor dest) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); } @Override @@ -444,7 +444,7 @@ class LambdaClassFixer extends ClassVisitor { String desc, String signature, String[] exceptions) { - super(Opcodes.ASM5, access, name, desc, signature, exceptions); + super(Opcodes.ASM6, access, name, desc, signature, exceptions); this.dest = dest; this.lambdaInfo = lambdaInfo; this.classLoader = classLoader; diff --git a/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java b/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java index a360749..e828952 100644 --- a/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java +++ b/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static java.lang.invoke.MethodHandles.publicLookup; -import static org.objectweb.asm.Opcodes.ASM5; +import static org.objectweb.asm.Opcodes.ASM6; import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableSet; @@ -70,7 +70,7 @@ class LambdaDesugaring extends ClassVisitor { ImmutableSet.Builder<String> aggregateInterfaceLambdaMethods, ImmutableSet<MethodInfo> lambdaMethodsUsedInInvokeDyanmic, boolean allowDefaultMethods) { - super(Opcodes.ASM5, dest); + super(Opcodes.ASM6, dest); this.targetLoader = targetLoader; this.lambdas = lambdas; this.aggregateInterfaceLambdaMethods = aggregateInterfaceLambdaMethods; @@ -374,7 +374,7 @@ class LambdaDesugaring extends ClassVisitor { String desc, String signature, String[] exceptions) { - super(ASM5, access, name, desc, signature, exceptions); + super(ASM6, access, name, desc, signature, exceptions); this.dest = checkNotNull(dest, "Null destination for %s.%s : %s", internalName, name, desc); } diff --git a/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java b/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java index 23d7a0d..f66d862 100644 --- a/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java +++ b/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java @@ -13,7 +13,7 @@ // limitations under the License. package com.google.devtools.build.android.desugar; -import static org.objectweb.asm.Opcodes.ASM5; +import static org.objectweb.asm.Opcodes.ASM6; import static org.objectweb.asm.Opcodes.INVOKESTATIC; import static org.objectweb.asm.Opcodes.LCMP; @@ -27,7 +27,7 @@ import org.objectweb.asm.MethodVisitor; public class LongCompareMethodRewriter extends ClassVisitor { public LongCompareMethodRewriter(ClassVisitor cv) { - super(ASM5, cv); + super(ASM6, cv); } @Override @@ -40,7 +40,7 @@ public class LongCompareMethodRewriter extends ClassVisitor { private static class LongCompareMethodVisitor extends MethodVisitor { public LongCompareMethodVisitor(MethodVisitor visitor) { - super(ASM5, visitor); + super(ASM6, visitor); } @Override diff --git a/java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java b/java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java index 5ce0bee..86465d6 100644 --- a/java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java +++ b/java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java @@ -13,7 +13,7 @@ // limitations under the License. package com.google.devtools.build.android.desugar; -import static org.objectweb.asm.Opcodes.ASM5; +import static org.objectweb.asm.Opcodes.ASM6; import static org.objectweb.asm.Opcodes.DUP; import static org.objectweb.asm.Opcodes.INVOKESTATIC; import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL; @@ -30,7 +30,7 @@ import org.objectweb.asm.MethodVisitor; public class ObjectsRequireNonNullMethodRewriter extends ClassVisitor { public ObjectsRequireNonNullMethodRewriter(ClassVisitor cv) { - super(ASM5, cv); + super(ASM6, cv); } @Override @@ -43,7 +43,7 @@ public class ObjectsRequireNonNullMethodRewriter extends ClassVisitor { private static class ObjectsMethodInlinerMethodVisitor extends MethodVisitor { public ObjectsMethodInlinerMethodVisitor(MethodVisitor mv) { - super(ASM5, mv); + super(ASM6, mv); } @Override diff --git a/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java b/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java index 2cdcae1..507b7d0 100644 --- a/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java +++ b/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java @@ -14,7 +14,7 @@ package com.google.devtools.build.android.desugar; import static com.google.common.base.Preconditions.checkNotNull; -import static org.objectweb.asm.Opcodes.ASM5; +import static org.objectweb.asm.Opcodes.ASM6; import static org.objectweb.asm.Opcodes.INVOKESTATIC; import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL; @@ -103,7 +103,7 @@ public class TryWithResourcesRewriter extends ClassVisitor { ClassLoader classLoader, Set<String> visitedExceptionTypes, AtomicInteger numOfTryWithResourcesInvoked) { - super(ASM5, classVisitor); + super(ASM6, classVisitor); this.classLoader = classLoader; this.visitedExceptionTypes = visitedExceptionTypes; this.numOfTryWithResourcesInvoked = numOfTryWithResourcesInvoked; @@ -143,7 +143,7 @@ public class TryWithResourcesRewriter extends ClassVisitor { public TryWithResourceVisitor( String methodSignature, MethodVisitor methodVisitor, ClassLoader classLoader) { - super(ASM5, methodVisitor); + super(ASM6, methodVisitor); this.classLoader = classLoader; this.methodSignature = methodSignature; } |