About some changed in 3.8
Marcus Denker
denker at iam.unibe.ch
Wed Jan 25 08:27:40 UTC 2006
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
>
>
>
>
>
>
More information about the V3dot9
mailing list