diff options
Diffstat (limited to 'src/cuchaz/enigma/analysis/JarIndex.java')
| -rw-r--r-- | src/cuchaz/enigma/analysis/JarIndex.java | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/src/cuchaz/enigma/analysis/JarIndex.java b/src/cuchaz/enigma/analysis/JarIndex.java index 3aac8bd..f54beda 100644 --- a/src/cuchaz/enigma/analysis/JarIndex.java +++ b/src/cuchaz/enigma/analysis/JarIndex.java | |||
| @@ -57,7 +57,6 @@ public class JarIndex { | |||
| 57 | private TranslationIndex m_translationIndex; | 57 | private TranslationIndex m_translationIndex; |
| 58 | private Multimap<String,String> m_interfaces; | 58 | private Multimap<String,String> m_interfaces; |
| 59 | private Map<Entry,Access> m_access; | 59 | private Map<Entry,Access> m_access; |
| 60 | private Map<FieldEntry,ClassEntry> m_fieldClasses; // TODO: this will become obsolete! | ||
| 61 | private Multimap<String,MethodEntry> m_methodImplementations; | 60 | private Multimap<String,MethodEntry> m_methodImplementations; |
| 62 | private Multimap<BehaviorEntry,EntryReference<BehaviorEntry,BehaviorEntry>> m_behaviorReferences; | 61 | private Multimap<BehaviorEntry,EntryReference<BehaviorEntry,BehaviorEntry>> m_behaviorReferences; |
| 63 | private Multimap<FieldEntry,EntryReference<FieldEntry,BehaviorEntry>> m_fieldReferences; | 62 | private Multimap<FieldEntry,EntryReference<FieldEntry,BehaviorEntry>> m_fieldReferences; |
| @@ -70,7 +69,6 @@ public class JarIndex { | |||
| 70 | m_translationIndex = new TranslationIndex(); | 69 | m_translationIndex = new TranslationIndex(); |
| 71 | m_interfaces = HashMultimap.create(); | 70 | m_interfaces = HashMultimap.create(); |
| 72 | m_access = Maps.newHashMap(); | 71 | m_access = Maps.newHashMap(); |
| 73 | m_fieldClasses = Maps.newHashMap(); | ||
| 74 | m_methodImplementations = HashMultimap.create(); | 72 | m_methodImplementations = HashMultimap.create(); |
| 75 | m_behaviorReferences = HashMultimap.create(); | 73 | m_behaviorReferences = HashMultimap.create(); |
| 76 | m_fieldReferences = HashMultimap.create(); | 74 | m_fieldReferences = HashMultimap.create(); |
| @@ -114,9 +112,6 @@ public class JarIndex { | |||
| 114 | } | 112 | } |
| 115 | m_interfaces.put(className, interfaceName); | 113 | m_interfaces.put(className, interfaceName); |
| 116 | } | 114 | } |
| 117 | for (CtField field : c.getDeclaredFields()) { | ||
| 118 | indexField(field); | ||
| 119 | } | ||
| 120 | for (CtBehavior behavior : c.getDeclaredBehaviors()) { | 115 | for (CtBehavior behavior : c.getDeclaredBehaviors()) { |
| 121 | indexBehavior(behavior); | 116 | indexBehavior(behavior); |
| 122 | } | 117 | } |
| @@ -169,18 +164,6 @@ public class JarIndex { | |||
| 169 | } | 164 | } |
| 170 | } | 165 | } |
| 171 | 166 | ||
| 172 | private void indexField(CtField field) { | ||
| 173 | // get the field entry | ||
| 174 | String className = Descriptor.toJvmName(field.getDeclaringClass().getName()); | ||
| 175 | FieldEntry fieldEntry = new FieldEntry(new ClassEntry(className), field.getName()); | ||
| 176 | |||
| 177 | // is the field a class type? | ||
| 178 | if (field.getSignature().startsWith("L")) { | ||
| 179 | ClassEntry fieldTypeEntry = new ClassEntry(field.getSignature().substring(1, field.getSignature().length() - 1)); | ||
| 180 | m_fieldClasses.put(fieldEntry, fieldTypeEntry); | ||
| 181 | } | ||
| 182 | } | ||
| 183 | |||
| 184 | private void indexBehavior(CtBehavior behavior) { | 167 | private void indexBehavior(CtBehavior behavior) { |
| 185 | // get the behavior entry | 168 | // get the behavior entry |
| 186 | final BehaviorEntry behaviorEntry = BehaviorEntryFactory.create(behavior); | 169 | final BehaviorEntry behaviorEntry = BehaviorEntryFactory.create(behavior); |
| @@ -222,7 +205,7 @@ public class JarIndex { | |||
| 222 | FieldEntry calledFieldEntry = JavassistUtil.getFieldEntry(call); | 205 | FieldEntry calledFieldEntry = JavassistUtil.getFieldEntry(call); |
| 223 | ClassEntry resolvedClassEntry = m_translationIndex.resolveEntryClass(calledFieldEntry); | 206 | ClassEntry resolvedClassEntry = m_translationIndex.resolveEntryClass(calledFieldEntry); |
| 224 | if (resolvedClassEntry != null && !resolvedClassEntry.equals(calledFieldEntry.getClassEntry())) { | 207 | if (resolvedClassEntry != null && !resolvedClassEntry.equals(calledFieldEntry.getClassEntry())) { |
| 225 | calledFieldEntry = new FieldEntry(resolvedClassEntry, call.getFieldName()); | 208 | calledFieldEntry = new FieldEntry(calledFieldEntry, resolvedClassEntry); |
| 226 | } | 209 | } |
| 227 | EntryReference<FieldEntry,BehaviorEntry> reference = new EntryReference<FieldEntry,BehaviorEntry>( | 210 | EntryReference<FieldEntry,BehaviorEntry> reference = new EntryReference<FieldEntry,BehaviorEntry>( |
| 228 | calledFieldEntry, | 211 | calledFieldEntry, |
| @@ -448,8 +431,7 @@ public class JarIndex { | |||
| 448 | // does the caller use this type? | 431 | // does the caller use this type? |
| 449 | BehaviorEntry caller = references.iterator().next().context; | 432 | BehaviorEntry caller = references.iterator().next().context; |
| 450 | for (FieldEntry fieldEntry : getReferencedFields(caller)) { | 433 | for (FieldEntry fieldEntry : getReferencedFields(caller)) { |
| 451 | ClassEntry fieldClass = getFieldClass(fieldEntry); | 434 | if (fieldEntry.getType().hasClass() && fieldEntry.getType().getClassEntry().equals(innerClassEntry)) { |
| 452 | if (fieldClass != null && fieldClass.equals(innerClassEntry)) { | ||
| 453 | // caller references this type, so it can't be anonymous | 435 | // caller references this type, so it can't be anonymous |
| 454 | return null; | 436 | return null; |
| 455 | } | 437 | } |
| @@ -475,10 +457,6 @@ public class JarIndex { | |||
| 475 | return m_access.get(entry); | 457 | return m_access.get(entry); |
| 476 | } | 458 | } |
| 477 | 459 | ||
| 478 | public ClassEntry getFieldClass(FieldEntry fieldEntry) { | ||
| 479 | return m_fieldClasses.get(fieldEntry); | ||
| 480 | } | ||
| 481 | |||
| 482 | public ClassInheritanceTreeNode getClassInheritance(Translator deobfuscatingTranslator, ClassEntry obfClassEntry) { | 460 | public ClassInheritanceTreeNode getClassInheritance(Translator deobfuscatingTranslator, ClassEntry obfClassEntry) { |
| 483 | 461 | ||
| 484 | // get the root node | 462 | // get the root node |