OMFG! :-((( -- Cheers, Peter.
On 12 aug 2011, at 17:16, Max Leske <[email protected]> wrote: > 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. >> > >
