RFR: Eliminate extra forwarding pointer per object

Aleksey Shipilev shade at redhat.com
Wed May 8 09:14:01 UTC 2019


On 5/8/19 11:09 AM, Simone Bordet wrote:
> Hi,
> 
> On Tue, May 7, 2019 at 9:50 PM Roman Kennke <rkennke at redhat.com> wrote:
>>
>> Until now, Shenandoah had the 'limitation' that it required an extra
>> word per object to keep the forwarding pointer. It either points to
>> itself (most of the time) or to the forwarded object when evacuated. The
>> forwarding pointer is updated atomically using CAS. This is the heart of
>> Shenandoah's evacuation protocol.
>>
>> With LRB, we have the opportunity to eliminate that extra word.
> 
> I obviously missed the memo, but can you clarify this?
> What's exactly LRB? Is there any reference I can read about this technique?

https://mail.openjdk.java.net/pipermail/shenandoah-dev/2019-April/009203.html

LRB = LoadReferenceBarrier. LRB intercepts heap accesses at load-reference time, evacuates the
object then. This is stronger to-space invariant than we used to have. With LRB, we (almost) never
access collection set (from-space) objects. This avoids dealing with stores, acmp barriers, etc.
Also, it makes from-space object available for storing the forwarding data, as Roman's patch does.

-- 
Thanks,
-Aleksey



More information about the shenandoah-dev mailing list