--- a/JavaMethodAnalyzer.st Tue Sep 10 10:34:38 2013 +0100
+++ b/JavaMethodAnalyzer.st Sun Sep 15 01:44:55 2013 +0100
@@ -22,7 +22,7 @@
JavaByteCodeProcessorAdapter subclass:#JavaMethodAnalyzer
instanceVariableNames:'fieldsAccessed fieldsRead fieldsWritten staticsAccessed
- staticsRead staticsWritten methodsInvoked'
+ staticsRead staticsWritten methodsInvoked refdClasses'
classVariableNames:''
poolDictionaries:''
category:'Languages-Java-Support-Decompiling'
@@ -88,6 +88,15 @@
!JavaMethodAnalyzer methodsFor:'instructions'!
+anewarray
+ | classRef |
+
+ classRef := constantPool at: self fetchIndex2.
+ refdClasses add: classRef.
+
+ "Created: / 09-09-2013 / 12:21:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
getfield
| fieldRef |
@@ -105,8 +114,10 @@
fieldRef := constantPool at: self fetchIndex2.
staticsRead add: fieldRef.
staticsAccessed add: fieldRef.
+ refdClasses add: fieldRef classRef.
"Created: / 05-09-2013 / 16:19:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 09-09-2013 / 12:16:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
invinterface
@@ -135,6 +146,25 @@
"Created: / 30-08-2013 / 17:05:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+multianewarray
+ | classRef |
+
+ classRef := constantPool at: self fetchIndex2.
+ self fetchIndex. "/ dimensions
+ refdClasses add: classRef.
+
+ "Created: / 09-09-2013 / 12:21:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+new
+ | classRef |
+
+ classRef := constantPool at: self fetchIndex2.
+ refdClasses add: classRef.
+
+ "Created: / 09-09-2013 / 12:18:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
putfield
| fieldRef |
@@ -146,14 +176,15 @@
"Modified: / 30-08-2013 / 17:02:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-puystatic
+putstatic
| fieldRef |
fieldRef := constantPool at: self fetchIndex2.
staticsWritten add: fieldRef.
staticsAccessed add: fieldRef.
+ refdClasses add: fieldRef classRef.
- "Created: / 05-09-2013 / 16:19:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 09-09-2013 / 12:16:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaMethodAnalyzer methodsFor:'processing loop'!
@@ -168,6 +199,7 @@
staticsWritten := Set new.
methodsInvoked := Set new.
+ refdClasses := Set new.
"/ Abstract, native or other funny method
aMethod byteCode isNil ifTrue:[ ^ self ].
@@ -175,7 +207,7 @@
^ super process: aMethod receiver: aReceiver arguments: args.
"Created: / 30-08-2013 / 13:23:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 05-09-2013 / 16:18:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 09-09-2013 / 12:15:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaMethodAnalyzer methodsFor:'queries'!
@@ -252,9 +284,16 @@
!
readGlobals
- self halt.
+ | names |
+
+ names := refdClasses collect:[:ref | ref name ].
+"/ (names includes: 'sun/misc/Unsafe') ifTrue:[
+"/ self halt.
+"/ ].
+ ^ names
"Created: / 05-09-2013 / 15:27:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 09-09-2013 / 12:33:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
readInstVars
@@ -308,7 +347,8 @@
!JavaMethodAnalyzer class methodsFor:'documentation'!
-version_CVS
- ^ '$Header$'
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
! !