Hi Ronie,
From my understanding, following code cannot work in x64 because registers are overwritten while marshalling arguments:
generateLowcodeObjectTrampolines
... snip ...
ceInstantiateClassIndexableSizeTrampoline := cogit genTrampolineFor: #instantiateClass:indexableSize:
called: 'ceInstantiateClassIndexableSizeTrampoline'
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 ;)
Cheers