Details
Description
This replaces SF RFE tracker #1663440.
Ian:
When pointers become large, for example in 64bit systems, pointer compression can reduce their size and speed performance. BEA show around a
10% speedup:
http://e-docs.bea.com/jrockit/releases/5026x/relnotes/relnotes.html#wp1079760
For PowerPC 64, and hopefully the forthcoming x86-64, it would be good to have compressed reference support.
Dave:
From a pure capability viewpoint, this would be a great feature to have. Running with compressed pointers is a outstanding way to get read/write barrier completeness in a VM.
From a performance standpoint, this is a win for applications that you want to run with approx 2.5gig to 4gig heaps (or 2.5 gig to 32gig with an extra shift of the offset in the access sequence). If the app runs in under 2.5 gig of heap, then you use a 32 bit JVM on the 64 bit OS (AIX definitely supports this, Linux does too as far as I know). If it needs more than 4 (32) gig, then the cheap (base + 32-bit offset) compression scheme doesn't apply.
It happens that the 2.5-4gig heap range appears to have some commercially interesting applications, so BEA productized it. The extent to which this would be practically useful for Jikes RVM really depends on the workloads we want to optimize for.
Kris:
I still have some code from old base for compressing pointers. I'll attach a patch. It might not be complete for all configurations, is only for ppc-aix and probably needs some cleanup (some of the code might be a little hacky, leftovers of other features,...). In this patch we only compress pointers in heap objects, we do not compress Word types(Address, Word, ObjectReference, AddressArray) , because the goal was a bit different. But it gives a good idea of code places that need to be updated to achieve the compressed pointer described here.
Issue Links
- depends upon
-
RVM-265
Read Barriers
-