fb5a8a5a7327ff9c841c581a94f4586cec8ca44d
ARM and x86_64 require "real" pointers to be sign-extended in their top bits. This means a working pointer is guaranteed to have either "11" as leading bits, or "00". So, to tag a "fake" pointer which is an unboxed 32-bit integer, we simply toggle the leading bit.
Description
Code for the compiler described in my blog
Languages
C++
79.4%
C
10.2%
Yacc
6.8%
Lex
1.9%
CMake
1.6%
Other
0.1%