summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/JarIndex.java
diff options
context:
space:
mode:
authorGravatar jeff2014-08-21 01:10:37 -0400
committerGravatar jeff2014-08-21 01:10:37 -0400
commit237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375 (patch)
treeebad059c7fa0bc7723858cb25eed0bb6e95fe42a /src/cuchaz/enigma/analysis/JarIndex.java
parentfixed recognition of inner class tokens (diff)
downloadenigma-fork-237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375.tar.gz
enigma-fork-237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375.tar.xz
enigma-fork-237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375.zip
fixed call graph searching
added system to navigate multiple tokens for the same entry in a behavior
Diffstat (limited to 'src/cuchaz/enigma/analysis/JarIndex.java')
-rw-r--r--src/cuchaz/enigma/analysis/JarIndex.java30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/cuchaz/enigma/analysis/JarIndex.java b/src/cuchaz/enigma/analysis/JarIndex.java
index f408d93..315a286 100644
--- a/src/cuchaz/enigma/analysis/JarIndex.java
+++ b/src/cuchaz/enigma/analysis/JarIndex.java
@@ -146,10 +146,15 @@ public class JarIndex
146 } 146 }
147 else if( behavior instanceof CtConstructor ) 147 else if( behavior instanceof CtConstructor )
148 { 148 {
149 thisEntry = new ConstructorEntry( 149 boolean isStatic = behavior.getName().equals( "<clinit>" );
150 new ClassEntry( className ), 150 if( isStatic )
151 behavior.getSignature() 151 {
152 ); 152 thisEntry = new ConstructorEntry( new ClassEntry( className ) );
153 }
154 else
155 {
156 thisEntry = new ConstructorEntry( new ClassEntry( className ), behavior.getSignature() );
157 }
153 } 158 }
154 else 159 else
155 { 160 {
@@ -159,7 +164,6 @@ public class JarIndex
159 // index method calls 164 // index method calls
160 try 165 try
161 { 166 {
162 final Multiset<Entry> callNumbers = HashMultiset.create();
163 behavior.instrument( new ExprEditor( ) 167 behavior.instrument( new ExprEditor( )
164 { 168 {
165 @Override 169 @Override
@@ -171,11 +175,9 @@ public class JarIndex
171 call.getMethodName(), 175 call.getMethodName(),
172 call.getSignature() 176 call.getSignature()
173 ); 177 );
174 callNumbers.add( calledMethodEntry );
175 EntryReference<BehaviorEntry,BehaviorEntry> reference = new EntryReference<BehaviorEntry,BehaviorEntry>( 178 EntryReference<BehaviorEntry,BehaviorEntry> reference = new EntryReference<BehaviorEntry,BehaviorEntry>(
176 calledMethodEntry, 179 calledMethodEntry,
177 thisEntry, 180 thisEntry
178 callNumbers.count( calledMethodEntry ) - 1
179 ); 181 );
180 m_behaviorReferences.put( calledMethodEntry, reference ); 182 m_behaviorReferences.put( calledMethodEntry, reference );
181 } 183 }
@@ -188,11 +190,9 @@ public class JarIndex
188 new ClassEntry( className ), 190 new ClassEntry( className ),
189 call.getFieldName() 191 call.getFieldName()
190 ); 192 );
191 callNumbers.add( calledFieldEntry );
192 EntryReference<FieldEntry,BehaviorEntry> reference = new EntryReference<FieldEntry,BehaviorEntry>( 193 EntryReference<FieldEntry,BehaviorEntry> reference = new EntryReference<FieldEntry,BehaviorEntry>(
193 calledFieldEntry, 194 calledFieldEntry,
194 thisEntry, 195 thisEntry
195 callNumbers.count( calledFieldEntry ) - 1
196 ); 196 );
197 m_fieldReferences.put( calledFieldEntry, reference ); 197 m_fieldReferences.put( calledFieldEntry, reference );
198 } 198 }
@@ -208,11 +208,9 @@ public class JarIndex
208 new ClassEntry( className ), 208 new ClassEntry( className ),
209 call.getSignature() 209 call.getSignature()
210 ); 210 );
211 callNumbers.add( calledConstructorEntry );
212 EntryReference<BehaviorEntry,BehaviorEntry> reference = new EntryReference<BehaviorEntry,BehaviorEntry>( 211 EntryReference<BehaviorEntry,BehaviorEntry> reference = new EntryReference<BehaviorEntry,BehaviorEntry>(
213 calledConstructorEntry, 212 calledConstructorEntry,
214 thisEntry, 213 thisEntry
215 callNumbers.count( calledConstructorEntry ) - 1
216 ); 214 );
217 m_behaviorReferences.put( calledConstructorEntry, reference ); 215 m_behaviorReferences.put( calledConstructorEntry, reference );
218 } 216 }
@@ -225,11 +223,9 @@ public class JarIndex
225 new ClassEntry( className ), 223 new ClassEntry( className ),
226 call.getSignature() 224 call.getSignature()
227 ); 225 );
228 callNumbers.add( calledConstructorEntry );
229 EntryReference<BehaviorEntry,BehaviorEntry> reference = new EntryReference<BehaviorEntry,BehaviorEntry>( 226 EntryReference<BehaviorEntry,BehaviorEntry> reference = new EntryReference<BehaviorEntry,BehaviorEntry>(
230 calledConstructorEntry, 227 calledConstructorEntry,
231 thisEntry, 228 thisEntry
232 callNumbers.count( calledConstructorEntry ) - 1
233 ); 229 );
234 m_behaviorReferences.put( calledConstructorEntry, reference ); 230 m_behaviorReferences.put( calledConstructorEntry, reference );
235 } 231 }