Search in your emails for this same method. I've been surprised before you ;)
DiskProxy>>comeFullyUpOnReload: smartRefStream
� � � �"Internalize myself into a fully alive object after raw loading from a
� � � �DataStream. (See my class comment.) DataStream will substitute the
� � � �object from this eval for the DiskProxy."
� � � �| globalObj symbol arrayIndex |
� � � �symbol := globalObjectName. � � "See if class is mapped to another name"
� � � �(smartRefStream respondsTo: #renamed)
� � � � � � � �ifTrue: [
� � � � � � � � � � � �"If in outPointers in an ImageSegment, remember original class
� � � � � � � � � � � �name.
� � � � � � � � � � � �See mapClass:installIn:. Would be lost otherwise."
>>>>> � � � � � � � � � (thisContext sender sender sender sender sender sender sender sender receiver class == ImageSegment
>>>>> � � � � � � � � � � � � � and: [ thisContext sender sender sender sender method == (DataStream compiledMethodAt: #readArray) ])
� � � � � � � � � � � � � � � �ifTrue: [
� � � � � � � � � � � � � � � � � � � �arrayIndex := thisContext sender sender sender sender tempAt:
4. � � �"index var in readArray. Later safer to find i on stack
� � � � � � � � � � � � � � � � � � � �of context."
� � � � � � � � � � � � � � � � � � � �smartRefStream renamedConv at: arrayIndex put: symbol ]. � � � �"save
original name"
� � � � � � � � � � � �symbol := smartRefStream renamed at: symbol ifAbsent: [ symbol ] ]. � � "map"
� � � �globalObj := Smalltalk globals
� � � � � � � �at: symbol
� � � � � � � �ifAbsent: [
� � � � � � � � � � � �preSelector == nil & (constructorSelector = #yourself)
� � � � � � � � � � � � � � � �ifTrue: [
� � � � � � � � � � � � � � � � � � � �Transcript
� � � � � � � � � � � � � � � � � � � � � � � �cr;
� � � � � � � � � � � � � � � � � � � � � � � �show: symbol , ' is undeclared.'.
� � � � � � � � � � � � � � � � � � � �(Undeclared includesKey: symbol)
� � � � � � � � � � � � � � � � � � � � � � � �ifTrue: [ ^ Undeclared at: symbol ].
� � � � � � � � � � � � � � � � � � � �Undeclared at: symbol put: nil.
� � � � � � � � � � � � � � � � � � � �^ nil ].
� � � � � � � � � � � �^ self error: 'Global "' , symbol , '" not found' ].
� � � �preSelector
� � � � � � � �ifNotNil: [
� � � � � � � � � � � �Symbol
� � � � � � � � � � � � � � � �hasInterned: preSelector
� � � � � � � � � � � � � � � �ifTrue: [ :selector |
� � � � � � � � � � � � � � � � � � � �[ globalObj := globalObj perform: selector ]
� � � � � � � � � � � � � � � � � � � � � � � �on: Error
� � � � � � � � � � � � � � � � � � � � � � � �do: [ :ex |
� � � � � � � � � � � � � � � � � � � � � � � � � � � �ex messageText = 'key not found'
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �ifTrue: [ ^ nil ].
� � � � � � � � � � � � � � � � � � � � � � � � � � � �^ ex signal ] ] ]. � � �"keep the Proxy if Project does not exist"
� � � �constructorSelector ifNil: [ ^ globalObj ].
� � � �Symbol
� � � � � � � �hasInterned: constructorSelector
� � � � � � � �ifTrue: [ :selector |
� � � � � � � � � � � �[ ^ globalObj perform: selector withArguments: constructorArgs ]
� � � � � � � � � � � � � � � �on: Error
� � � � � � � � � � � � � � � �do: [ :ex |
� � � � � � � � � � � � � � � � � � � �ex messageText = 'key not found'
� � � � � � � � � � � � � � � � � � � � � � � �ifTrue: [ ^ nil ].
� � � � � � � � � � � � � � � � � � � �^ ex signal ] ]. � � � �"args not checked against Renamed"
� � � �^ nil
--
Best regards,
Igor Stasenko AKA sig.