<div dir="ltr"><div><div><div>Hi all,<br></div>I was about fixing <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/240">https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/240</a><br></div>some implementations use int to pass a pointer, that clearly does not work in 64bits...<br><br></div><div>What we need is to pass a buffer which is a Smalltalk ByteArray (or WordArray or something), in other word an oop, (stored into a sqInt/usqInt).<br><br></div><div>In Cog/Spur, an oop is a direct machine pointer, so we can avoid a translation and that's why some implementation directly declare a void* parameter.<br><br></div><div>In legacy interpreter VM, an oop is always an sqInt, but not always a pointer. For example a 32bits image can run on a VM compiled for 64bits, and in this case, sqInt is 32-bit wide, while the pointer is 64bits. So we used to pass thru pointerForOop. Some implementations do that.<br><br></div><div>So what we have now is a big mix of partly compatible/uncompatible code. We have to fix the int buf, but what should we better use, pointerForOop(sqInt buf) or direct void *buf?<br><br></div><div>Nicolas<br></div><div><br><br></div></div>