Eliot Miranda uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-eem.1359.mcz
==================== Summary ====================
Name: Kernel-eem.1359 Author: eem Time: 30 October 2020, 12:10:07.699375 pm UUID: 1ec9a445-37fa-4256-84d8-9bdf8b52eb7d Ancestors: Kernel-eem.1358
Merge 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-eem.1358 ===============
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: 'Recursive message not understood!!' translated]. + ^self send: #doesNotUnderstand: - [^self send: #doesNotUnderstand: to: rcvr with: {(Message selector: selector arguments: arguments) lookupClass: lookupClass} lookupIn: lookupClass]. meth isCompiledMethod ifFalse: ["Object as Methods (OaM) protocol: 'The contract is that, when the VM encounters an ordinary object (rather than a compiled method) in the method dictionary during lookup, it sends it the special selector #run:with:in: providing the original selector, arguments, and receiver.'. DOI: 10.1145/2991041.2991062." + ^self send: #run:with:in: - ^ self send: #run:with:in: to: meth with: {selector. arguments. rcvr}]. meth numArgs = arguments size ifFalse: [^ self error: ('Wrong number of arguments in simulated message {1}' translated format: {selector})]. (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 {1} not understood' translated format: {arguments first selector})]. - [^ self error: ('Simulated message {1} not understood' translated format: {arguments first selector})]. ctxt := Context sender: self receiver: rcvr method: meth arguments: arguments. + (primIndex isInteger and: [primIndex > 0]) ifTrue: - (primIndex notNil and: [primIndex > 0]) ifTrue: [ctxt failPrimitiveWith: val]. ^ctxt!
packages@lists.squeakfoundation.org