James Bielman wrote:
By the way, I was looking into writing a regression test for this and had problems since we also use FOREIGN-ADDRESS-UNSIGNED to implement POINTER-EQ. Could we be using EQUALP instead for comparing pointers (or is the fact that seems to work just a coincidence?)
BTW, w.r.t. useage of FFI by CFFI, other optimizations seem worthwhile, e.g. INC-POINTER.
However my opinion is that CFFI should globally (across all platforms) attempt to optimize nested slot access, to come close to C.
C's foo.bar.zot should become a single MEM-READ with OFFSET, not (mem-read (inc-pointer (inc-pointer foo (offset-of bar)) (offset-of zot)))
Some time ago, I thought a compiler macro on mem-read (or what was it) could help, but the pattern to recognize is hairy.
Regards, Jorg Hohle.