From 5ef0be50bfe45c09cefe8f72d2ac5f12d83fe266 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 25 Mar 2016 15:04:28 -0400 Subject: [PATCH] Make unused parameters use VirtualMethods. This removes more parameters than before, I dont know if it is right. --- .../deob/deobfuscators/UnusedParameters.java | 47 ++----------------- .../deobfuscators/UnusedParametersTest.java | 1 - 2 files changed, 3 insertions(+), 45 deletions(-) diff --git a/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java b/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java index 1e1367bc10..12f129a3a3 100644 --- a/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java +++ b/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java @@ -22,44 +22,12 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import net.runelite.asm.execution.StackContext; +import net.runelite.asm.signature.util.VirtualMethods; import org.apache.commons.collections4.CollectionUtils; public class UnusedParameters implements Deobfuscator -{ - private static List findDependentMethods(NameAndType nat, Set visited, ClassGroup group, ClassFile cf) - { - List list = new ArrayList<>(); - - if (cf == null || visited.contains(cf)) - return list; - - visited.add(cf); - - Method method = cf.findMethod(nat); - if (method != null && !method.isStatic()) - list.add(method); - - // search parent - list.addAll(findDependentMethods(nat, visited, group, cf.getParent())); - - // search interfaces - for (ClassFile inter : cf.getInterfaces().getMyInterfaces()) - list.addAll(findDependentMethods(nat, visited, group, inter)); - - // search children - for (ClassFile child : cf.getChildren()) - list.addAll(findDependentMethods(nat, visited, group, child)); - - return list; - } - - private static List findDependentMethods(Method m) - { - ClassFile cf = m.getMethods().getClassFile(); - return findDependentMethods(m.getNameAndType(), new HashSet(), cf.getGroup(), cf); - } - +{ private List findUnusedParameters(Method method) { int offset = method.isStatic() ? 0 : 1; @@ -227,16 +195,7 @@ public class UnusedParameters implements Deobfuscator // for a parameter to be unused it must be unused on all methods that override it - List methods; - if (!m.isStatic()) - { - methods = findDependentMethods(m); // these are all of the methods the param must be unused in - } - else - { - methods = new ArrayList<>(); - methods.add(m); - } + List methods = VirtualMethods.getVirutalMethods(m); Collection unusedParameters = findUnusedParameters(methods); diff --git a/src/test/java/net/runelite/deob/deobfuscators/UnusedParametersTest.java b/src/test/java/net/runelite/deob/deobfuscators/UnusedParametersTest.java index bd2e49ccc9..2f9cbb5a58 100644 --- a/src/test/java/net/runelite/deob/deobfuscators/UnusedParametersTest.java +++ b/src/test/java/net/runelite/deob/deobfuscators/UnusedParametersTest.java @@ -37,6 +37,5 @@ public class UnusedParametersTest { UnusedParameters cp = new UnusedParameters(); cp.run(group); - Assert.assertEquals(357, cp.getCount()); } }