<div dir="ltr"><div><div><div>Hi Nicolas,<br><br></div>Thanks for telling me about this. It seems that only ceInstantiateClassIndexableSiz<wbr>eTrampoline and ceByteSizeOfTrampoline needed that kind of correction.<br><br>During this month I will try to make Lowcode working with x86_64. I need it working in 64 bits OS X for using Metal with Woden 2, so for me this very important.<br><br></div>Best regards<br></div>Ronie<br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-11-27 18:50 GMT-03:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br><div dir="ltr">Hi Ronie,<br>From my understanding, following code cannot work in x64 because registers are overwritten while marshalling arguments:<br><br>generateLowcodeObjectTrampolin<wbr>es<br>    ... snip ...<br>    ceInstantiateClassIndexableSiz<wbr>eTrampoline := cogit genTrampolineFor: #instantiateClass:<wbr>indexableSize:<br>                                                called: '<wbr>ceInstantiateClassIndexableSiz<wbr>eTrampoline'<br>                                                arg: ReceiverResultReg<br>                                                arg: Arg0Reg<br>                                                result: TempReg.<br>                                                <br>The first arg ReceiverResultReg (RDX) will overwrite Arg0Reg (RDI) before Arg0Reg is copied to Arg1Reg (RSI)...<br>See genMarshallNArgs:arg:arg:arg:<wbr>arg:<br>and carefully read the comment for the x64 flavour, it's scary ;)<br><br>Cheers<br></div>
<br></blockquote></div><br></div>