On Mon, Mar 1, 2021 at 16:05 David T. Lewis <lewis@mail.msen.com> wrote:
 
On Mon, Mar 01, 2021 at 06:20:58PM +0100, stes@PANDORA.BE wrote:

> > Install primitiveArrayBecomeOneWayNoCopyHash as primitive 248
> > replacing obsolete primitiveInvokeObjectAsMethod.
>
> Any news on this Tests-ObjectsAsMethods issue ?
>
> The purpose of those tests are not clear to me;
>
> Perhaps the change for the "primitives" which was made, can be reverted ?
>
> Possibly that creates a new problem for primitiveArrayBecomeOneWayNoCopyHash.
>
> David Stes
>

You can consider this a bug in the most recent interpreter VMs. I had
failed to notice that there is a hard coded reference to that primitive
number within the VM itself, and this reference is now resulting in
invocation of the wrong function.

A trivial fix is to rearrange some primtive number assignments, but the
correct thing to do is adopt the logic that Eliot uses in oscog so that
the function is not invoked as a "primitive" at all.

I'll try to follow up on this next week.

Dave


This test crashes SqueakJS, too. Could be the same primitive reassignment confusion. 

Can you describe this “hard coded reference”? Under what circumstances is a primitive being called without being an actual primitive?

Vanessa