[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