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

Roman Kennke rkennke at openjdk.java.net
Wed May 19 16:55:55 UTC 2021


> 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

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

Changes:
  - all: https://git.openjdk.java.net/lilliput/pull/6/files
  - new: https://git.openjdk.java.net/lilliput/pull/6/files/0675ff94..a63acf4d

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=lilliput&pr=6&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=lilliput&pr=6&range=00-01

  Stats: 11 lines in 2 files changed: 0 ins; 11 del; 0 mod
  Patch: https://git.openjdk.java.net/lilliput/pull/6.diff
  Fetch: git fetch https://git.openjdk.java.net/lilliput pull/6/head:pull/6

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


More information about the lilliput-dev mailing list