About some changed in 3.8

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

About some changed in 3.8

stéphane ducasse-2
hi

I just browsed Tweak and looked at references of the exception
CSqueak3Point8Detected as mentioned by andreas

I report here the stuff he is checking I let you judge.


ProtoObject class>>addSelectorSilently: selector withMethod: newMethod
        | oldMethod result done |
        CSqueak3Point8Detected signal. "Only used from 3.8"
        oldMethod := self compiledMethodAt: selector ifAbsent:[nil].
        done := false.
        [result := super addSelectorSilently: selector withMethod: newMethod]
                on: CSqueak3Point8Detected do:[:ex| done := true. ex resume].
        done ifFalse:[self methodChanged: selector from: oldMethod to:  
newMethod].
        ^result


addSelector: selector withMethod: newMethod
        | oldMethod result done |
        oldMethod := self compiledMethodAt: selector ifAbsent:[nil].
        done := false.
        result := [super addSelector: selector withMethod: newMethod]
                on: CSqueak3Point8Detected do:[:ex| done := true. ex resume].
        done ifFalse:[self methodChanged: selector from: oldMethod to:  
newMethod].
        ^result

addSelector: selector withMethod: newMethod notifying: requestor
        | oldMethod result |
        CSqueak3Point8Detected signal. "Only used from 3.8"
        oldMethod := self compiledMethodAt: selector ifAbsent:[nil].
        result := super addSelector: selector withMethod: newMethod  
notifying: requestor.
        self methodChanged: selector from: oldMethod to: newMethod.
        ^result


basicRemoveSelector: selector
        | oldMethod result |
        CSqueak3Point8Detected signal. "Only used in 3.8"
        oldMethod := self compiledMethodAt: selector ifAbsent:[^nil].
        result := super basicRemoveSelector: selector.
        self methodChanged: selector from: oldMethod to: nil.
        ^result

removeSelector: selector
        | oldMethod result done |
        oldMethod := self compiledMethodAt: selector ifAbsent:[^nil].
        done := false.
        result := [super removeSelector: selector]
                on: CSqueak3Point8Detected do:[:ex| done := true. ex resume].
        done ifFalse:[self methodChanged: selector from: oldMethod to: nil].
        ^result






Reply | Threaded
Open this post in threaded view
|

Re: About some changed in 3.8

Marcus Denker
I don't understand what the problem is supposed to be. something with
the systemchange notifier? Of course silently adding a method does
not trigger a change event in 3.8. It could trigger a special silent  
event
to allow people to hook even into that...

Whatever the problem is: Why did he not just send a patch to fix it?  
If it is so
horribly bad, it sure could have been changed in a 3.8.1

On 24.01.2006, at 21:03, stéphane ducasse wrote:

> hi
>
> I just browsed Tweak and looked at references of the exception
> CSqueak3Point8Detected as mentioned by andreas
>
> I report here the stuff he is checking I let you judge.
>
>
> ProtoObject class>>addSelectorSilently: selector withMethod: newMethod
> | oldMethod result done |
> CSqueak3Point8Detected signal. "Only used from 3.8"
> oldMethod := self compiledMethodAt: selector ifAbsent:[nil].
> done := false.
> [result := super addSelectorSilently: selector withMethod: newMethod]
> on: CSqueak3Point8Detected do:[:ex| done := true. ex resume].
> done ifFalse:[self methodChanged: selector from: oldMethod to:  
> newMethod].
> ^result
>
>
> addSelector: selector withMethod: newMethod
> | oldMethod result done |
> oldMethod := self compiledMethodAt: selector ifAbsent:[nil].
> done := false.
> result := [super addSelector: selector withMethod: newMethod]
> on: CSqueak3Point8Detected do:[:ex| done := true. ex resume].
> done ifFalse:[self methodChanged: selector from: oldMethod to:  
> newMethod].
> ^result
>
> addSelector: selector withMethod: newMethod notifying: requestor
> | oldMethod result |
> CSqueak3Point8Detected signal. "Only used from 3.8"
> oldMethod := self compiledMethodAt: selector ifAbsent:[nil].
> result := super addSelector: selector withMethod: newMethod  
> notifying: requestor.
> self methodChanged: selector from: oldMethod to: newMethod.
> ^result
>
>
> basicRemoveSelector: selector
> | oldMethod result |
> CSqueak3Point8Detected signal. "Only used in 3.8"
> oldMethod := self compiledMethodAt: selector ifAbsent:[^nil].
> result := super basicRemoveSelector: selector.
> self methodChanged: selector from: oldMethod to: nil.
> ^result
>
> removeSelector: selector
> | oldMethod result done |
> oldMethod := self compiledMethodAt: selector ifAbsent:[^nil].
> done := false.
> result := [super removeSelector: selector]
> on: CSqueak3Point8Detected do:[:ex| done := true. ex resume].
> done ifFalse:[self methodChanged: selector from: oldMethod to: nil].
> ^result
>
>
>
>
>
>