The Inbox: Kernel-ct.1358.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Kernel-ct.1358.mcz

commits-2
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!


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Kernel-ct.1358.mcz

Eliot Miranda-2
Hi Christoph,

On Wed, Oct 28, 2020 at 3:37 PM <[hidden email]> 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.


--
_,,,^..^,,,_
best, Eliot


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Kernel-ct.1358.mcz

Eliot Miranda-2


On Thu, Oct 29, 2020 at 8:54 AM Eliot Miranda <[hidden email]> wrote:
Hi Christoph,

On Wed, Oct 28, 2020 at 3:37 PM <[hidden email]> 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


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Kernel-ct.1358.mcz

Eliot Miranda-2
In reply to this post by commits-2
Hi Christoph,

On Wed, Oct 28, 2020 at 3:37 PM <[hidden email]> 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!

I think the error should be
self error: ('Recursive message not-understood {1}' translated format: {selector})

_,,,^..^,,,_
best, Eliot