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.
> 


Reply via email to