On Sun 30 Jan 2011 23:46, l...@gnu.org (Ludovic Courtès) writes:
The problem is that each ‘make-pointer’ call (and ‘dereference-pointer’,
etc.) conses. This can make conversion to/from C quite inefficient.
We could simply allow Scheme integers to work as pointers. It's not
very nice though.
on most platforms, at least for
pointers returned by ‘malloc’.
So, here comes the idea of “immediate pointers”, which would fit in a
word. A 3-bit tag is used, as for immediate numbers co; pointers that
aren’t 8-byte aligned are still stored in an scm_tc7_pointer cell.
I experimented
to/from C quite inefficient.
In addition, 90% of the C pointers of interest are 8-byte aligned---that’s
on x86_64-linux-gnu, but it surely holds on most platforms, at least for
pointers returned by ‘malloc’.
So, here comes the idea of “immediate pointers”, which would fit in a
word. A 3-bit tag