About some changed in 3.8

stéphane ducasse ducasse at iam.unibe.ch
Tue Jan 24 20:03:27 UTC 2006


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