summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Thierer <tobiast@google.com>2017-08-07 20:10:30 +0100
committerTobias Thierer <tobiast@google.com>2017-08-08 22:51:35 +0100
commit9b21f60f97abaa4af6d1385182f7735502b75fd3 (patch)
tree526f2669c3420b85ae6890f1e2911cf325fa0ce7
parent1b3eed8a1b34f2470bb11932b6d30a49111aac1e (diff)
downloaddesugar-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
-rw-r--r--java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java2
-rw-r--r--java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java12
-rw-r--r--java/com/google/devtools/build/android/desugar/HeaderClassLoader.java8
-rw-r--r--java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java10
-rw-r--r--java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java4
-rw-r--r--java/com/google/devtools/build/android/desugar/Java7Compatibility.java8
-rw-r--r--java/com/google/devtools/build/android/desugar/LambdaClassFixer.java14
-rw-r--r--java/com/google/devtools/build/android/desugar/LambdaDesugaring.java6
-rw-r--r--java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java6
-rw-r--r--java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java6
-rw-r--r--java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java6
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;
}