[Vm-dev] Lowcode and x64

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sun Nov 27 21:50:15 UTC 2016

Hi Ronie,
>From my understanding, following code cannot work in x64 because registers
are overwritten while marshalling arguments:

    ... snip ...
    ceInstantiateClassIndexableSizeTrampoline := cogit genTrampolineFor:
                                                arg: ReceiverResultReg
                                                arg: Arg0Reg
                                                result: TempReg.

The first arg ReceiverResultReg (RDX) will overwrite Arg0Reg (RDI) before
Arg0Reg is copied to Arg1Reg (RSI)...
See genMarshallNArgs:arg:arg:arg:arg:
and carefully read the comment for the x64 flavour, it's scary ;)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20161127/400b18c3/attachment.html>

More information about the Vm-dev mailing list