> > Since the jmp is a fixed 2 bytes (0xEB, tablesize), all references to
> the table can still be done with trivial pc/RIP-relative addressing within
> the closure, and you just need one pointer for both the table and the
> closure data.
> Only if tablesize fits in 127 bytes. Otherwise it will use 0xE9-based
> encoding which is larger.
The table size is variable - between 2 and 6 32- or 64-bit words, where 2-3 is
the common case. This means Chris's trick of adjusting the pointer by a fixed
amount to point directly to the code doesn't work unless we pad the table to
the worst-case size all the time, which wastes a lot of space.
Well, perhaps we could split the table into two, with the branch instruction
after the first 2 or 3 words.
Cheers,
Simon
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc