--- a/ObjectFileLoader.st Fri Dec 22 19:06:18 1995 +0100
+++ b/ObjectFileLoader.st Sat Dec 23 01:16:41 1995 +0100
@@ -900,47 +900,51 @@
|oldDummyMethod where m newHandle|
PreviouslyLoadedObjects notNil ifTrue:[
- PreviouslyLoadedObjects do:[:entry |
- |fileName handle|
-
- fileName := entry key.
- handle := entry value.
- handle moduleID:nil.
-
- handle isClassLibHandle ifTrue:[
- ('OBJFLOADER: reloading classes in ' , fileName , ' ...') infoPrintNL.
- self loadObjectFile:fileName
- ] ifFalse:[
- handle isMethodHandle ifTrue:[
- oldDummyMethod := handle method.
- oldDummyMethod isNil ifTrue:[
- ('OBJFLOADER: ignore obsolete (already collected) method in ' , fileName) infoPrintNL
- ] ifFalse:[
- ('OBJFLOADER: reloading method in ' , fileName , ' ...') infoPrintNL.
- where := oldDummyMethod who.
- newHandle := self loadMethodObjectFile:fileName.
- newHandle isNil ifTrue:[
- ('OBJFLOADER: failed to reload method in ' , fileName , ' ...') infoPrintNL.
- ] ifFalse:[
- m := newHandle method.
- m source:(oldDummyMethod source).
- m package:(oldDummyMethod package).
- where notNil ifTrue:[
- m == ((where at:1) compiledMethodAt:(where at:2)) ifFalse:[
- 'OBJFLOADER: oops - loaded method installed wrong' errorPrintNL.
- ].
- ].
- ]
- ]
- ] ifFalse:[
- ('OBJFLOADER: oops - invalid (obsolete) objectFile handle: ' , handle printString) infoPrintNL.
- ]
- ]
- ].
- PreviouslyLoadedObjects := nil
+ PreviouslyLoadedObjects do:[:entry |
+ |fileName handle cls sel|
+
+ fileName := entry key.
+ handle := entry value.
+ handle moduleID:nil.
+
+ handle isClassLibHandle ifTrue:[
+ ('OBJFLOADER: reloading classes in ' , fileName , ' ...') infoPrintNL.
+ self loadObjectFile:fileName
+ ] ifFalse:[
+ handle isMethodHandle ifTrue:[
+ oldDummyMethod := handle method.
+ oldDummyMethod isNil ifTrue:[
+ ('OBJFLOADER: ignore obsolete (already collected) method in ' , fileName) infoPrintNL
+ ] ifFalse:[
+ ('OBJFLOADER: reloading method in ' , fileName , ' ...') infoPrintNL.
+ where := oldDummyMethod who.
+ newHandle := self loadMethodObjectFile:fileName.
+ newHandle isNil ifTrue:[
+ ('OBJFLOADER: failed to reload method in ' , fileName , ' ...') infoPrintNL.
+ ] ifFalse:[
+ m := newHandle method.
+ m source:(oldDummyMethod source).
+ m package:(oldDummyMethod package).
+ where notNil ifTrue:[
+ cls := where at:1.
+ sel := where at:2.
+ m == (cls compiledMethodAt:sel) ifFalse:[
+ 'OBJFLOADER: oops - loaded method installed wrong' errorPrintNL.
+ ] ifTrue:[
+ cls changed:#methodDictionary with:(Array with:sel with:oldDummyMethod).
+ ]
+ ].
+ ]
+ ]
+ ] ifFalse:[
+ ('OBJFLOADER: oops - invalid (obsolete) objectFile handle: ' , handle printString) infoPrintNL.
+ ]
+ ]
+ ].
+ PreviouslyLoadedObjects := nil
]
- "Modified: 6.12.1995 / 18:37:32 / cg"
+ "Modified: 23.12.1995 / 01:11:25 / cg"
!
rememberAllObjectFiles
@@ -2870,6 +2874,6 @@
!ObjectFileLoader class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/ObjectFileLoader.st,v 1.68 1995-12-19 20:48:35 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/ObjectFileLoader.st,v 1.69 1995-12-23 00:16:41 cg Exp $'
! !
ObjectFileLoader initialize!