OMFG! :-((( -- Cheers, Peter. On 12 aug 2011, at 17:16, Max Leske <maxleske@gmail.com> 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."
(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:
| 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." 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.