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 |
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 > > > > > > |
Free forum by Nabble | Edit this page |