RFR: 8392760: Improve liveness/remembered set verification for G1 [v2]

Thomas Schatzl tschatzl at openjdk.org
Tue Feb 21 11:54:15 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 with a new target base due to a merge or a rebase. The pull request now contains three commits:

 - Refactoring after 8302975
 - initial attempts, nothing done
   
   further cleanup
   
   more cleanup
   
   factor out changes that move the verifylivenessclosure
   
   fix compilation
   
   kbarrett review, indentation
   
   Minor removal of unnecessary code
   
   initial version
   
   more cleanup
   
   More improvements
   
   More removal of stuff
   
   More cleanup
   
   More^2 cleanup
   
   Remove some changes
   
   More cleanups
   
   fix compilation
   
   Cleanup
 - removal

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

Changes: https://git.openjdk.org/jdk/pull/12660/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12660&range=01
  Stats: 359 lines in 12 files changed: 119 ins; 171 del; 69 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