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