From be22b07ae28cd8de11e3a32c3766aed6966ec6b5 Mon Sep 17 00:00:00 2001 From: asie Date: Wed, 7 Nov 2018 20:18:50 +0100 Subject: update Guava, show proper constructor tree node, fix AccessFlags.toString --- src/main/java/cuchaz/enigma/analysis/JarIndex.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (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 f6338a2..158df4b 100644 --- a/src/main/java/cuchaz/enigma/analysis/JarIndex.java +++ b/src/main/java/cuchaz/enigma/analysis/JarIndex.java @@ -30,6 +30,7 @@ public class JarIndex { private Multimap methods; private Multimap methodImplementations; private Multimap> methodsReferencing; + private Multimap> methodsReferencingClasses; private Multimap methodReferences; private Multimap> fieldReferences; private Multimap innerClassesByOuter; @@ -45,6 +46,7 @@ public class JarIndex { this.fields = HashMultimap.create(); this.methods = HashMultimap.create(); this.methodImplementations = HashMultimap.create(); + this.methodsReferencingClasses = HashMultimap.create(); this.methodsReferencing = HashMultimap.create(); this.methodReferences = HashMultimap.create(); this.fieldReferences = HashMultimap.create(); @@ -93,6 +95,7 @@ public class JarIndex { EntryRenamer.renameClassesInSet(renames, this.obfClassEntries); this.translationIndex.renameClasses(renames); EntryRenamer.renameClassesInMultimap(renames, this.methodImplementations); + EntryRenamer.renameClassesInMultimap(renames, this.methodsReferencingClasses); EntryRenamer.renameClassesInMultimap(renames, this.methodsReferencing); EntryRenamer.renameClassesInMultimap(renames, this.methodReferences); EntryRenamer.renameClassesInMultimap(renames, this.fieldReferences); @@ -136,12 +139,16 @@ public class JarIndex { } protected void indexMethodCall(MethodDefEntry callerEntry, String owner, String name, String desc) { - MethodEntry referencedMethod = new MethodEntry(entryPool.getClass(owner), name, new MethodDescriptor(desc)); + ClassEntry referencedClass = entryPool.getClass(owner); + MethodEntry referencedMethod = new MethodEntry(referencedClass, name, new MethodDescriptor(desc)); ClassEntry resolvedClassEntry = translationIndex.resolveEntryOwner(referencedMethod); if (resolvedClassEntry != null && !resolvedClassEntry.equals(referencedMethod.getOwnerClassEntry())) { referencedMethod = referencedMethod.updateOwnership(resolvedClassEntry); } methodsReferencing.put(referencedMethod, new EntryReference<>(referencedMethod, referencedMethod.getName(), callerEntry)); + if (referencedMethod.isConstructor()) { + methodsReferencingClasses.put(referencedClass, new EntryReference<>(referencedClass, referencedMethod.getName(), callerEntry)); + } methodReferences.put(callerEntry, referencedMethod); } @@ -421,6 +428,10 @@ public class JarIndex { return fieldEntries; } + public Collection> getMethodsReferencing(ClassEntry classEntry) { + return this.methodsReferencingClasses.get(classEntry); + } + public Collection> getMethodsReferencing(MethodEntry methodEntry) { return this.methodsReferencing.get(methodEntry); } -- cgit v1.2.3