On Apr 16, 2008, at 4:45 AM, Ketil Malde wrote:
I notice BEA uses something called "compressed pointers" to get the
64-bit (more registers, etc) benefits without paying the
(cache-thrashing) cost.

But only if you're not *actually* using a 64-bit address space. From their own documentation:

The heap size will be limited to less than 4 GB; therefore, you can only use this option for applications that demand less than 4 GB of live data. The heap will be reduced to meet this size limitation if you specify a larger initial (-Xms) or maximum (-Xmx) heap size.

(http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp1021022)

So this amounts to saying "we can use the 64-bit ISA but still use 32- bit pointers with all the restrictions that accompany them". You might be able to keep non-heap data around in excess of 4GB (eg it might be possible to mmap a file *and* have 4GB of heap data, and maybe even keep thread stacks off-heap as well).

You can take advantage of pointer alignment to get address spaces of 8-32GB (by shifting 32-bit pointers before dereferencing them), but that requires taking back the pointer bits that GHC just stole for pointer tagging.

-Jan

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to