From 4bc3afe4ff08b9f0c08952ec7f6e0ac930280cc5 Mon Sep 17 00:00:00 2001 From: asie Date: Sat, 8 Dec 2018 11:21:18 +0100 Subject: add barebones plugin framework, cleanup --- src/main/java/cuchaz/enigma/analysis/JarIndex.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/main/java/cuchaz/enigma/analysis/JarIndex.java') diff --git a/src/main/java/cuchaz/enigma/analysis/JarIndex.java b/src/main/java/cuchaz/enigma/analysis/JarIndex.java index 158df4b..e8bda8e 100644 --- a/src/main/java/cuchaz/enigma/analysis/JarIndex.java +++ b/src/main/java/cuchaz/enigma/analysis/JarIndex.java @@ -15,6 +15,8 @@ import com.google.common.collect.*; import cuchaz.enigma.bytecode.AccessFlags; import cuchaz.enigma.mapping.*; import cuchaz.enigma.mapping.entry.*; +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.Opcodes; import java.util.*; @@ -62,10 +64,15 @@ public class JarIndex { obfClassEntries.addAll(jar.getClassEntries()); // step 2: index classes, fields, methods, interfaces - jar.visit(node -> node.accept(new IndexClassVisitor(this, Opcodes.ASM5))); + if (buildInnerClasses) { + // + step 5: index inner classes + jar.visitReader(name -> new IndexClassVisitor(this, Opcodes.ASM5, new IndexInnerClassVisitor(this, Opcodes.ASM5)), ClassReader.SKIP_CODE); + } else { + jar.visitReader(name -> new IndexClassVisitor(this, Opcodes.ASM5), ClassReader.SKIP_CODE); + } // step 3: index field, method, constructor references - jar.visit(node -> node.accept(new IndexReferenceVisitor(this, Opcodes.ASM5))); + jar.visitReader(name -> new IndexReferenceVisitor(this, Opcodes.ASM5), ClassReader.SKIP_FRAMES); // step 4: index access and bridged methods for (MethodDefEntry methodEntry : methods.values()) { @@ -79,9 +86,6 @@ public class JarIndex { } if (buildInnerClasses) { - // step 5: index inner classes and anonymous classes - jar.visit(node -> node.accept(new IndexInnerClassVisitor(this, Opcodes.ASM5))); - // step 6: update other indices with inner class info Map renames = Maps.newHashMap(); for (ClassEntry innerClassEntry : this.innerClassesByOuter.values()) { -- cgit v1.2.3