summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/JarIndex.java
diff options
context:
space:
mode:
authorGravatar jeff2015-02-08 23:10:26 -0500
committerGravatar jeff2015-02-08 23:10:26 -0500
commit31a1a418b04cd3e7b06cb50cb8674a2c25079f6c (patch)
tree5914fd0c3557250dc61382a571ea3a3cdb9d941d /src/cuchaz/enigma/analysis/JarIndex.java
parentMerge with 09538fb039f2e4e5e240cfb331be512ae8740fda (diff)
downloadenigma-fork-31a1a418b04cd3e7b06cb50cb8674a2c25079f6c.tar.gz
enigma-fork-31a1a418b04cd3e7b06cb50cb8674a2c25079f6c.tar.xz
enigma-fork-31a1a418b04cd3e7b06cb50cb8674a2c25079f6c.zip
added types to fields
Diffstat (limited to 'src/cuchaz/enigma/analysis/JarIndex.java')
-rw-r--r--src/cuchaz/enigma/analysis/JarIndex.java26
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