[master] RFR: 8304710: [Lilliput] Use forwarding table for sliding GCs

Roman Kennke rkennke at openjdk.org
Wed Apr 12 19:01:01 UTC 2023


This changes the full-GC forwarding of Serial, Parallel, G1 and Shenandoah to use a forwarding table instead of the fancy SlidingForwarding that we had until now. SlidingForwarding has been problematic because it did not work universally, in particular we needed to disable the G1 serial full GC (the last last ditch GC, after parallel full GC failed). Also, sliding forwarding would not work when we start working towards 32bit headers.

The implementation of the forwarding table is a dense array of forwardings, with sorted entries and binary search. For details, have a look at the comments at the top of class ForwardingTable.

The change also greatly reduces the upstream diff.

Testing:
 - [x] tier1
 - [x] tier2

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

Commit messages:
 - Add/fix comments
 - Add GTest
 - Various fixes and improvements
 - Support G1 serial compaction
 - Prototype to use region-based binary-search forwarding table
 - 8304710: [Lilliput] Use forwarding table for sliding GCs

Changes: https://git.openjdk.org/lilliput/pull/83/files
 Webrev: https://webrevs.openjdk.org/?repo=lilliput&pr=83&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8304710
  Stats: 1212 lines in 44 files changed: 678 ins; 390 del; 144 mod
  Patch: https://git.openjdk.org/lilliput/pull/83.diff
  Fetch: git fetch https://git.openjdk.org/lilliput.git pull/83/head:pull/83

PR: https://git.openjdk.org/lilliput/pull/83


More information about the lilliput-dev mailing list