--- a/src/JavaFieldRef2.st Wed Dec 07 12:39:12 2011 +0000
+++ b/src/JavaFieldRef2.st Wed Dec 07 13:38:08 2011 +0000
@@ -86,6 +86,15 @@
!JavaFieldRef2 methodsFor:'private - resolving'!
+findInstOffset
+ "fieldRef must be resolved before calling me"
+ self assert: classCache notNil.
+ self assert: valueCache notNil.
+ ^ classCache instVarOffsetOf: self name.
+
+ "Created: / 07-12-2011 / 13:44:59 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
findResolvedStaticValue
valueCache := JavaResolver uniqueInstance
resolveStaticFieldIndentifiedByRef: self.
@@ -116,15 +125,28 @@
"Modified: / 07-12-2011 / 13:30:49 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!
+findStaticOffset
+ "fieldRef must be resolved before calling me"
+ self assert: classCache notNil.
+ self assert: valueCache notNil.
+ ^ classCache class instVarOffsetOf: self name.
+
+ "Created: / 07-12-2011 / 13:45:15 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
resolveOffset
"fieldRef must be resolved before calling me"
- | currentClass |
- currentClass := classCache.
- self assert: (currentClass instVarNames includes: self name).
- offset := currentClass instVarOffsetOf: self name.
+self assert: valueCache notNil.
+ self assert: classCache isJavaClass.
+
+ valueCache isStatic ifTrue: [ offset := self findStaticOffset. ] ifFalse: [
+ offset := self findInstOffset.
+ offset isNil ifTrue: [ offset := self findStaticOffset. ]
+ ].
+ self assert: offset notNil.
- "Modified: / 07-12-2011 / 13:35:51 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+ "Modified: / 07-12-2011 / 14:33:51 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!
resolveStaticOffset