[Vm-dev] [64 bits] Object pointers in jitted code
eliot.miranda at gmail.com
Wed Feb 28 15:11:50 UTC 2018
> On Feb 28, 2018, at 6:13 AM, Clément Bera <bera.clement at gmail.com> wrote:
>> On Wed, Feb 28, 2018 at 2:16 PM, Javier Pimás <elpochodelagente at gmail.com> wrote:
>> Hi! This time I'm investigating how cog jit handles pointers to objects in native code. In x86-32 its easier because you have immediates of the size of a pointer, but in x64 the immediates are restricted to 32bits (and I think less in arm). So I wonder how people works around that, if using a movabs instruction every time you need a pointer or if doing something else. I found a mail in the list dated from 2011 (titled "questions about cog internals") where you (Eliot) said that pointers were inlined in jit code, but I don't know if that's still the case. Looking at the slang code I found CogOutOfLineLiteralsX64Compiler, but it seems it is not used (yet?).
> Just generate & disassemble any method with literals from the Squeak image (in-image compilation workspace scripts) with different ISA and look at the disassembled code, it takes 1 second and you'll see by yourself how pointer size constants (literals) are dealt with.
> The ARM JIT dumps pointer size constants somewhere unreachable by machine code execution but near by (in-between jumps for example) and access it with PC-relative instructions, that's one good way to work around it.
>> Javier Pimás
>> Ciudad de Buenos Aires
> Clément Béra
> Pharo consortium engineer
> Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Vm-dev