Good luck with refactoring *that*…
On 12.08.2011, at 17:12, Igor Stasenko 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. >
