diff --git a/src/main/java/net/runelite/deob/ClassGroup.java b/src/main/java/net/runelite/deob/ClassGroup.java index 29ed09f784..36aed0fdcd 100644 --- a/src/main/java/net/runelite/deob/ClassGroup.java +++ b/src/main/java/net/runelite/deob/ClassGroup.java @@ -48,7 +48,7 @@ public class ClassGroup public void initialize() { - sort(); + //sort(); buildClassGraph(); lookup(); } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeInterface.java b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeInterface.java index 092bc5ed82..c4caa5c808 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeInterface.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeInterface.java @@ -19,12 +19,10 @@ import net.runelite.deob.signature.Signature; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import net.runelite.deob.Field; import net.runelite.deob.attributes.code.instruction.types.GetFieldInstruction; -import net.runelite.deob.attributes.code.instruction.types.MappableInstruction; import net.runelite.deob.deobfuscators.Renamer; import net.runelite.deob.deobfuscators.rename.MappingExecutorUtil; import net.runelite.deob.deobfuscators.rename.ParallelExecutorMapping; @@ -41,6 +39,12 @@ public class InvokeInterface extends Instruction implements InvokeInstruction { super(instructions, type, pc); } + + @Override + public String toString() + { + return "invokeinterface " + method + " in " + this.getInstructions().getCode().getAttributes().getMethod() + " at pc 0x" + Integer.toHexString(this.getPc()); + } @Override public void load(DataInputStream is) throws IOException diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeVirtual.java b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeVirtual.java index 8ba027ba0b..950e5159b4 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeVirtual.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/InvokeVirtual.java @@ -19,9 +19,7 @@ import net.runelite.deob.signature.Signature; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; -import java.util.HashSet; import java.util.List; import java.util.Set; import net.runelite.deob.Field; @@ -108,36 +106,12 @@ public class InvokeVirtual extends Instruction implements InvokeInstruction frame.addInstructionContext(ins); } - // find the possible methods this instruction might be invoking. we can't know for sure - // which method is being invoked without tracking the types of objects in fields and when - // passed in parameters/return values. @Override public List getMethods() { return myMethods != null ? myMethods : Arrays.asList(); } - private void findMethodFromClass(Set visited, List list, ClassFile clazz) - { - if (visited.contains(clazz)) - return; - visited.add(clazz); - - ClassFile parent = clazz.getParent(); - if (parent != null) - findMethodFromClass(visited, list, parent); - - for (ClassFile cf : clazz.getInterfaces().getMyInterfaces()) - findMethodFromClass(visited, list, cf); - - net.runelite.deob.Method m = clazz.findMethod(method.getNameAndType()); - if (m != null && !list.contains(m)) - list.add(m); - - for (ClassFile cf : clazz.getChildren()) - findMethodFromClass(visited, list, cf); - } - @Override public void removeParameter(int idx) { diff --git a/src/main/java/net/runelite/deob/pool/InterfaceMethod.java b/src/main/java/net/runelite/deob/pool/InterfaceMethod.java index 562c35540f..78c896bcad 100644 --- a/src/main/java/net/runelite/deob/pool/InterfaceMethod.java +++ b/src/main/java/net/runelite/deob/pool/InterfaceMethod.java @@ -34,6 +34,12 @@ public class InterfaceMethod extends PoolEntry { return new InterfaceMethod(clazz.copy(), nat.copy()); } + + @Override + public java.lang.String toString() + { + return clazz + "." + nat; + } @Override public void resolve(ConstantPool pool)