oops - changeArg is #ElementExpired; changedObject is the one we have to
look for.
--- a/ObjFHandle.st Fri Jan 24 23:54:22 1997 +0100
+++ b/ObjFHandle.st Thu Jan 30 21:00:59 1997 +0100
@@ -75,10 +75,10 @@
"return the functions which were already extracted from the module."
weakFunctionRefs isNil ifTrue:[^nil].
- ^ weakFunctionRefs asArray select:[:f | f notNil]
+ ^ weakFunctionRefs asArray select:[:f | f notNil and:[f ~~ 0]]
"Created: 12.7.1996 / 15:33:09 / cg"
- "Modified: 12.7.1996 / 15:38:00 / cg"
+ "Modified: 30.1.1997 / 20:54:54 / cg"
!
method
@@ -169,21 +169,33 @@
update:something with:aParameter from:changedObject
"my method/class object was collected - unload the underlying objectfile"
- something == weakMethodRef ifTrue:[
+ changedObject == weakMethodRef ifTrue:[
weakMethodRef nilAllCorpsesAndDo:[:idx |].
].
- something == weakClassRefs ifTrue:[
+ changedObject == weakClassRefs ifTrue:[
weakClassRefs nilAllCorpsesAndDo:[:idx |].
].
self isObsolete ifTrue:[
+ weakFunctionRefs notNil ifTrue:[
+ weakFunctionRefs removeDependent:self.
+ weakFunctionRefs := nil.
+ ].
+ weakClassRefs notNil ifTrue:[
+ weakClassRefs removeDependent:self.
+ weakClassRefs := nil.
+ ].
+ weakMethodRef notNil ifTrue:[
+ weakMethodRef removeDependent:self.
+ weakMethodRef := nil.
+ ].
('ObjectFileHandle [info]: unloading ' , pathName , ' (method/classes were garbageCollected)') infoPrintCR.
ObjectFileLoader unloadObjectFile:pathName
].
"Created: 5.12.1995 / 18:05:08 / cg"
- "Modified: 10.1.1997 / 14:58:36 / cg"
+ "Modified: 30.1.1997 / 20:57:56 / cg"
! !
!ObjectFileHandle methodsFor:'copying'!
@@ -350,5 +362,5 @@
!ObjectFileHandle class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Attic/ObjFHandle.st,v 1.21 1997-01-10 14:49:25 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Attic/ObjFHandle.st,v 1.22 1997-01-30 20:00:59 cg Exp $'
! !
--- a/ObjectFileHandle.st Fri Jan 24 23:54:22 1997 +0100
+++ b/ObjectFileHandle.st Thu Jan 30 21:00:59 1997 +0100
@@ -75,10 +75,10 @@
"return the functions which were already extracted from the module."
weakFunctionRefs isNil ifTrue:[^nil].
- ^ weakFunctionRefs asArray select:[:f | f notNil]
+ ^ weakFunctionRefs asArray select:[:f | f notNil and:[f ~~ 0]]
"Created: 12.7.1996 / 15:33:09 / cg"
- "Modified: 12.7.1996 / 15:38:00 / cg"
+ "Modified: 30.1.1997 / 20:54:54 / cg"
!
method
@@ -169,21 +169,33 @@
update:something with:aParameter from:changedObject
"my method/class object was collected - unload the underlying objectfile"
- something == weakMethodRef ifTrue:[
+ changedObject == weakMethodRef ifTrue:[
weakMethodRef nilAllCorpsesAndDo:[:idx |].
].
- something == weakClassRefs ifTrue:[
+ changedObject == weakClassRefs ifTrue:[
weakClassRefs nilAllCorpsesAndDo:[:idx |].
].
self isObsolete ifTrue:[
+ weakFunctionRefs notNil ifTrue:[
+ weakFunctionRefs removeDependent:self.
+ weakFunctionRefs := nil.
+ ].
+ weakClassRefs notNil ifTrue:[
+ weakClassRefs removeDependent:self.
+ weakClassRefs := nil.
+ ].
+ weakMethodRef notNil ifTrue:[
+ weakMethodRef removeDependent:self.
+ weakMethodRef := nil.
+ ].
('ObjectFileHandle [info]: unloading ' , pathName , ' (method/classes were garbageCollected)') infoPrintCR.
ObjectFileLoader unloadObjectFile:pathName
].
"Created: 5.12.1995 / 18:05:08 / cg"
- "Modified: 10.1.1997 / 14:58:36 / cg"
+ "Modified: 30.1.1997 / 20:57:56 / cg"
! !
!ObjectFileHandle methodsFor:'copying'!
@@ -350,5 +362,5 @@
!ObjectFileHandle class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/ObjectFileHandle.st,v 1.21 1997-01-10 14:49:25 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/ObjectFileHandle.st,v 1.22 1997-01-30 20:00:59 cg Exp $'
! !