diff --git a/pom.xml b/pom.xml
index 52bf3e4..c8618be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
net.md-5
SpecialSource
- 1.7.5-SNAPSHOT
+ 1.8.0-SNAPSHOT
jar
SpecialSource
@@ -45,7 +45,7 @@
org.ow2.asm
asm-debug-all
- 5.2
+ 6.0_BETA
compile
@@ -121,7 +121,7 @@
- true
+
true
diff --git a/src/main/java/net/md_5/specialsource/JarComparer.java b/src/main/java/net/md_5/specialsource/JarComparer.java
index f92c685..bccfc5f 100644
--- a/src/main/java/net/md_5/specialsource/JarComparer.java
+++ b/src/main/java/net/md_5/specialsource/JarComparer.java
@@ -71,7 +71,7 @@ public class JarComparer extends ClassVisitor {
}
public JarComparer(Jar jar) {
- super(Opcodes.ASM5);
+ super(Opcodes.ASM6);
this.jar = jar;
this.jarRepo = new JarRepo(jar);
this.inheritance = new JarProvider(jar);
@@ -166,7 +166,7 @@ public class JarComparer extends ClassVisitor {
private class MethodReferenceFinder extends MethodVisitor {
public MethodReferenceFinder() {
- super(Opcodes.ASM5);
+ super(Opcodes.ASM6);
}
@Override
diff --git a/src/main/java/net/md_5/specialsource/RemappingClassAdapter.java b/src/main/java/net/md_5/specialsource/RemappingClassAdapter.java
index 77b3927..2e59a82 100644
--- a/src/main/java/net/md_5/specialsource/RemappingClassAdapter.java
+++ b/src/main/java/net/md_5/specialsource/RemappingClassAdapter.java
@@ -60,54 +60,26 @@ package net.md_5.specialsource;
*/
import net.md_5.specialsource.repo.ClassRepo;
-
-import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Attribute;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.FieldVisitor;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-import net.md_5.specialsource.CustomRemapper;
import org.objectweb.asm.Label;
-import org.objectweb.asm.commons.RemappingAnnotationAdapter;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.commons.ClassRemapper;
+import org.objectweb.asm.commons.FieldRemapper;
+import org.objectweb.asm.commons.MethodRemapper;
-/**
- * A {@link ClassVisitor} for type remapping.
- *
- * @author Eugene Kuleshov
- */
-public class RemappingClassAdapter extends ClassVisitor {
+public class RemappingClassAdapter extends ClassRemapper {
protected final CustomRemapper remapper;
protected ClassRepo repo;
- protected String className;
public RemappingClassAdapter(final ClassVisitor cv, final CustomRemapper remapper, ClassRepo repo) {
- this(Opcodes.ASM5, cv, remapper);
+ super(cv, remapper);
this.repo = repo;
- }
-
- protected RemappingClassAdapter(final int api, final ClassVisitor cv, final CustomRemapper remapper) {
- super(api, cv);
this.remapper = remapper;
}
- @Override
- public void visit(int version, int access, String name, String signature,
- String superName, String[] interfaces) {
- this.className = name;
- super.visit(version, access, remapper.mapType(name), remapper
- .mapSignature(signature, false), remapper.mapType(superName),
- interfaces == null ? null : remapper.mapTypes(interfaces));
- }
-
- @Override
- public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
- AnnotationVisitor av;
- av = super.visitAnnotation(remapper.mapDesc(desc), visible);
- return av == null ? null : createRemappingAnnotationAdapter(av);
- }
-
@Override
public MethodVisitor visitMethod(int access, String name, String desc,
String signature, String[] exceptions) {
@@ -116,8 +88,7 @@ public class RemappingClassAdapter extends ClassVisitor {
className, name, desc, access), newDesc, remapper.mapSignature(
signature, false),
exceptions == null ? null : remapper.mapTypes(exceptions));
- return mv == null ? null : createRemappingMethodAdapter(access,
- newDesc, mv);
+ return mv == null ? null : createMethodRemapper(mv);
}
@Override
@@ -127,7 +98,7 @@ public class RemappingClassAdapter extends ClassVisitor {
remapper.mapFieldName(className, name, desc, access),
remapper.mapDesc(desc), remapper.mapSignature(signature, true),
remapper.mapValue(value));
- return fv == null ? null : createRemappingFieldAdapter(fv);
+ return fv == null ? null : createFieldRemapper(fv);
}
@Override
@@ -147,8 +118,9 @@ public class RemappingClassAdapter extends ClassVisitor {
desc == null ? null : remapper.mapMethodDesc(desc));
}
- protected FieldVisitor createRemappingFieldAdapter(FieldVisitor sup) {
- return new FieldVisitor(Opcodes.ASM5, sup) {
+ @Override
+ protected FieldVisitor createFieldRemapper(FieldVisitor fv) {
+ return new FieldRemapper(fv, remapper) {
@Override
public void visitAttribute(Attribute attr) {
if (SpecialSource.kill_lvt && attr.type.equals("LocalVariableTable")) {
@@ -157,16 +129,15 @@ public class RemappingClassAdapter extends ClassVisitor {
if (SpecialSource.kill_generics && attr.type.equals("LocalVariableTypeTable")) {
return;
}
- if (fv != null) {
- fv.visitAttribute(attr);
- }
+
+ super.visitAttribute(attr);
}
};
}
- protected MethodVisitor createRemappingMethodAdapter(int access, String newDesc, MethodVisitor sup) {
- MethodVisitor remap = new UnsortedRemappingMethodAdapter(access, newDesc, sup, remapper, repo);
- return new MethodVisitor(Opcodes.ASM5, remap) {
+ @Override
+ protected MethodVisitor createMethodRemapper(MethodVisitor mv) {
+ return new UnsortedRemappingMethodAdapter(mv, remapper, repo) {
@Override
public void visitAttribute(Attribute attr) {
if (SpecialSource.kill_lvt && attr.type.equals("LocalVariableTable")) {
@@ -175,9 +146,8 @@ public class RemappingClassAdapter extends ClassVisitor {
if (SpecialSource.kill_generics && attr.type.equals("LocalVariableTypeTable")) {
return;
}
- if (mv != null) {
- mv.visitAttribute(attr);
- }
+
+ super.visitAttribute(attr);
}
@Override
@@ -189,15 +159,10 @@ public class RemappingClassAdapter extends ClassVisitor {
};
}
- protected AnnotationVisitor createRemappingAnnotationAdapter(
- AnnotationVisitor av) {
- return new RemappingAnnotationAdapter(av, remapper);
- }
-
@Override
public void visitSource(String source, String debug) {
- if (!SpecialSource.kill_source && cv != null) {
- cv.visitSource(source, debug);
+ if (!SpecialSource.kill_source) {
+ super.visitSource(source, debug);
}
}
@@ -206,8 +171,7 @@ public class RemappingClassAdapter extends ClassVisitor {
if (SpecialSource.kill_generics && attr.type.equals("Signature")) {
return;
}
- if (cv != null) {
- cv.visitAttribute(attr);
- }
+
+ super.visitAttribute(attr);
}
}
diff --git a/src/main/java/net/md_5/specialsource/UnsortedRemappingMethodAdapter.java b/src/main/java/net/md_5/specialsource/UnsortedRemappingMethodAdapter.java
index 58af770..087a838 100644
--- a/src/main/java/net/md_5/specialsource/UnsortedRemappingMethodAdapter.java
+++ b/src/main/java/net/md_5/specialsource/UnsortedRemappingMethodAdapter.java
@@ -32,97 +32,33 @@ import java.util.Arrays;
import java.util.Collection;
import net.md_5.specialsource.repo.ClassRepo;
import net.md_5.specialsource.repo.RuntimeRepo;
-import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Handle;
-import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.RemappingAnnotationAdapter;
+import org.objectweb.asm.commons.MethodRemapper;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.FieldNode;
import org.objectweb.asm.tree.MethodNode;
-/**
- * A {@link LocalVariablesSorter} for type mapping.
- *
- * @author Eugene Kuleshov
- *
- * Edited 04-24-2013 LexManos: Changed super class to MethodVisitor, using
- * LocalVariablesSorter caused the LV indexes to be reassigned improperly.
- * Causing decompiled code to not follow a predictable pattern and not coincide
- * with RetroGuard's output.
- */
-public class UnsortedRemappingMethodAdapter extends MethodVisitor { //Lex: Changed LocalVariablesSorter to MethodVisitor
+public class UnsortedRemappingMethodAdapter extends MethodRemapper {
private static final Collection META_FACTORIES = Arrays.asList(
new Handle(Opcodes.H_INVOKESTATIC, "java/lang/invoke/LambdaMetafactory", "metafactory",
- "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"),
+ "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;", false),
new Handle(Opcodes.H_INVOKESTATIC, "java/lang/invoke/LambdaMetafactory", "altMetafactory",
- "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;")
+ "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;", false)
);
protected final CustomRemapper remapper;
private final ClassRepo classRepo;
- public UnsortedRemappingMethodAdapter(final int access, final String desc,
- final MethodVisitor mv, final CustomRemapper remapper, ClassRepo classRepo) {
- this(Opcodes.ASM5, access, desc, mv, remapper, classRepo);
- }
-
- protected UnsortedRemappingMethodAdapter(final int api, final int access,
- final String desc, final MethodVisitor mv, final CustomRemapper remapper, ClassRepo classRepo) {
- super(api, mv); //Lex: Removed access, desc
+ public UnsortedRemappingMethodAdapter(final MethodVisitor mv, final CustomRemapper remapper, ClassRepo classRepo) {
+ super(mv, remapper);
this.remapper = remapper;
this.classRepo = classRepo;
}
- @Override
- public AnnotationVisitor visitAnnotationDefault() {
- AnnotationVisitor av = mv.visitAnnotationDefault();
- return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
- }
-
- @Override
- public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
- AnnotationVisitor av = mv.visitAnnotation(remapper.mapDesc(desc),
- visible);
- return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
- }
-
- @Override
- public AnnotationVisitor visitParameterAnnotation(int parameter,
- String desc, boolean visible) {
- AnnotationVisitor av = mv.visitParameterAnnotation(parameter,
- remapper.mapDesc(desc), visible);
- return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
- }
-
- @Override
- public void visitFrame(int type, int nLocal, Object[] local, int nStack,
- Object[] stack) {
- super.visitFrame(type, nLocal, remapEntries(nLocal, local), nStack,
- remapEntries(nStack, stack));
- }
-
- private Object[] remapEntries(int n, Object[] entries) {
- for (int i = 0; i < n; i++) {
- if (entries[i] instanceof String) {
- Object[] newEntries = new Object[n];
- if (i > 0) {
- System.arraycopy(entries, 0, newEntries, 0, i);
- }
- do {
- Object t = entries[i];
- newEntries[i++] = t instanceof String ? remapper
- .mapType((String) t) : t;
- } while (i < n);
- return newEntries;
- }
- }
- return entries;
- }
-
@Override
public void visitFieldInsn(int opcode, String owner, String name,
String desc) {
@@ -200,33 +136,4 @@ public class UnsortedRemappingMethodAdapter extends MethodVisitor { //Lex: Chang
remapper.mapMethodDesc(desc), (Handle) remapper.mapValue(bsm),
bsmArgs);
}
-
- @Override
- public void visitTypeInsn(int opcode, String type) {
- super.visitTypeInsn(opcode, remapper.mapType(type));
- }
-
- @Override
- public void visitLdcInsn(Object cst) {
- super.visitLdcInsn(remapper.mapValue(cst));
- }
-
- @Override
- public void visitMultiANewArrayInsn(String desc, int dims) {
- super.visitMultiANewArrayInsn(remapper.mapDesc(desc), dims);
- }
-
- @Override
- public void visitTryCatchBlock(Label start, Label end, Label handler,
- String type) {
- super.visitTryCatchBlock(start, end, handler, type == null ? null
- : remapper.mapType(type));
- }
-
- @Override
- public void visitLocalVariable(String name, String desc, String signature,
- Label start, Label end, int index) {
- super.visitLocalVariable(name, remapper.mapDesc(desc),
- remapper.mapSignature(signature, true), start, end, index);
- }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/net/md_5/specialsource/util/FileLocator.java b/src/main/java/net/md_5/specialsource/util/FileLocator.java
index 4c864f6..833885a 100644
--- a/src/main/java/net/md_5/specialsource/util/FileLocator.java
+++ b/src/main/java/net/md_5/specialsource/util/FileLocator.java
@@ -47,7 +47,7 @@ public class FileLocator {
}
// Create our own cache file here, replacing potentially invalid characters
- String id = CharMatcher.JAVA_LETTER_OR_DIGIT.or(CharMatcher.anyOf("-_.")).negate().replaceFrom(url.toString(), '_');
+ String id = CharMatcher.javaLetterOrDigit().or(CharMatcher.anyOf("-_.")).negate().replaceFrom(url.toString(), '_');
File file = new File(tempDir, id);
// Check cache for a hit