RFR: 8302760: Improve liveness/remembered set verification for G1 [v3]
Thomas Schatzl
tschatzl at openjdk.org
Wed Feb 22 09:52:29 UTC 2023
> Hi all,
>
> can I have reviews for this refactoring/cleanup of the liveness/remembered set verification code for G1?
>
> Here is an overview of the changes
> - previously liveness and remembered set verification could be done separately. Thismade the code a bit more complicated than necessary; now that remembered set verification always follows liveness verification, the code can assume that and do some minor cleanup. I kept the remembered verification a separate closure (`VerifyRemSetClosure`) because the additional boiler plate code is negligible compared to the other duplication that would have been needed around failure count tracking.
> - factored out liveness and remembered set verification from `HeapRegion::verify`, and heavily cleaned up the resulting `HeapRegion::verify_liveness_and_remembered_set`. This includes some removal of code duplication wrt to the failure count tracking.
> - factored out a special `G1VerificationClosure::is_oop_safe` method that adds more checking of the `Klass`; I hesitated to put this into `Universe::is_oop` as this is much more extensive checking (and I wanted implicit error reporting :))
> - CollectedHeap::is_oop() should use `klass_raw` because otherwise it will immediately assert on oops with garbage Klass values (the new code will just return `false` as expected).
> - some special `oopDesc::print_name_on()` which does not crash on bad oops, similar to existing related debugging helpers.
>
> Thanks,
> Thomas
Thomas Schatzl has updated the pull request incrementally with one additional commit since the last revision:
kbarrett review
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/12660/files
- new: https://git.openjdk.org/jdk/pull/12660/files/a1e45d60..5f35120b
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=12660&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=12660&range=01-02
Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/12660.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/12660/head:pull/12660
PR: https://git.openjdk.org/jdk/pull/12660
More information about the hotspot-gc-dev
mailing list