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