[squeak-dev] The Inbox: Kernel-ct.1358.mcz

Eliot Miranda eliot.miranda at gmail.com
Thu Oct 29 15:55:04 UTC 2020


On Thu, Oct 29, 2020 at 8:54 AM Eliot Miranda <eliot.miranda at gmail.com>
wrote:

> Hi Christoph,
>
> On Wed, Oct 28, 2020 at 3:37 PM <commits at source.squeak.org> wrote:
>
>> A new version of Kernel was added to project The Inbox:
>> http://source.squeak.org/inbox/Kernel-ct.1358.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Kernel-ct.1358
>> Author: ct
>> Time: 28 October 2020, 11:37:24.817544 pm
>> UUID: c9af6acb-61cf-af42-b5fa-3afa8451bb24
>> Ancestors: Kernel-mt.1353
>>
>> Fixes a simulation bug that occurs when executing ProtoObject >>
>> #doesNotUnderstand:. See KernelTests-ct.388.
>>
>> =============== Diff against Kernel-mt.1353 ===============
>>
>> Item was changed:
>>   ----- Method: Context>>send:to:with:lookupIn: (in category
>> 'controlling') -----
>>   send: selector to: rcvr with: arguments lookupIn: lookupClass
>>         "Simulate the action of sending a message with selector and
>> arguments
>>          to rcvr. The argument, lookupClass, is the class in which to
>> lookup the
>>          message.  This is the receiver's class for normal messages, but
>> for super
>>          messages it will be some specific class related to the source
>> method."
>>
>>         | meth primIndex val ctxt |
>>         (meth := lookupClass lookupSelector: selector) ifNil:
>> +               [selector == #doesNotUnderstand: ifTrue:
>> +                       [self error: ('Simulated message {1} not
>> understood' translated format: {selector})].
>> +               ^self send: #doesNotUnderstand:
>> -               [^self send: #doesNotUnderstand:
>>                                 to: rcvr
>>                                 with: {(Message selector: selector
>> arguments: arguments) lookupClass: lookupClass}
>>                                 lookupIn: lookupClass].
>>         meth numArgs ~= arguments size ifTrue:
>>                 [^self error: 'Wrong number of arguments in simulated
>> message ', selector printString].
>>         (primIndex := meth primitive) > 0 ifTrue:
>>                 [val := self doPrimitive: primIndex method: meth
>> receiver: rcvr args: arguments.
>>                  (self isPrimFailToken: val) ifFalse:
>>                         [^val]].
>> -       (selector == #doesNotUnderstand: and: [lookupClass ==
>> ProtoObject]) ifTrue:
>> -               [^self error: 'Simulated message ', arguments first
>> selector, ' not understood'].
>>         ctxt := Context sender: self receiver: rcvr method: meth
>> arguments: arguments.
>>         primIndex > 0 ifTrue:
>>                 [ctxt failPrimitiveWith: val].
>>         ^ctxt!
>>
>
> What's the intent here?  Tis seems completely wrong to me.  The VM does
> not raise an error on looking up a message and finding none.  It simply
> sends doesNotUnderstand:.  The simulation machinery should mimic this.  So
> raising an error before sending doesNotUnderstand: seems completely wrong
> to me.
>

Oops.  Ignore this.  Let me try again...

_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20201029/2c92415d/attachment.html>


More information about the Squeak-dev mailing list