Search in your emails for this same method. I've been surprised before you ;)
On Fri, Aug 12, 2011 at 5:12 PM, Igor Stasenko <[email protected]> wrote: > 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. > > -- Mariano http://marianopeck.wordpress.com
