[Haskell-cafe] compressed pointers?

Jan-Willem Maessen jmaessen at alum.mit.edu
Wed Apr 16 08:17:10 EDT 2008


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



More information about the Haskell-Cafe mailing list