[master] RFR: Unconditionally preserve all marks during GC [v2]

Roman Kennke rkennke at openjdk.java.net
Thu Aug 19 19:57:13 UTC 2021


On Wed, 19 May 2021 16:55:55 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> When storing the Klass* in the object header, we need to preserve all marks during GC, because otherwise we'd be loosing the Klass*.
>> 
>> This means that the PreservedMarks structure is repurposed as a full (reverse) forwarding table. Reverse because instead of mapping object->forwardee, and leaving the mark alone, it maps object->mark and stores the forwardee in the header, which might be a better idea because it means we can have a most compact table.
>> 
>> Shenandoah doesn't have this problem, except during full-GC, and ZGC has its own forwarding table.
>> 
>> This change will likely affect performance, but I haven't checked by how much, yet. It's probably more useful to see this in the context of actually reduced header.
>> Testing:
>>  - [x] tier1
>>  - [x] tier2
>
> Roman Kennke has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Remove unnecessary asserts

I am closing this because it is no longer needed.

-------------

PR: https://git.openjdk.java.net/lilliput/pull/6


More information about the lilliput-dev mailing list