RFR: 8294752: G1: Remove redundant checks in check_obj_during_refinement

Albert Mingkun Yang ayang at openjdk.org
Wed Oct 5 09:12:31 UTC 2022


On Tue, 4 Oct 2022 17:28:55 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:

>> Simple change of removing redundant assertions.
>> 
>> Test: hotspot_gc
>
> src/hotspot/share/gc/g1/g1OopClosures.inline.hpp line 125:
> 
>> 123:   HeapRegion* from = g1h->heap_region_containing(p);
>> 124: 
>> 125:   assert(from->is_in_reserved(p) || from->is_humongous(),
> 
> I think this whole assert is broken almost meaningless (this is all pre-existing).
> 
> `heap_region_containing` always returns the `HeapRegion` `p` is in. So I would expect the first part of the disjunction (both in current old an new code) always true.
> 
> It made sense in very old code (before 52a1ad0) because `_from` has been set to the humongous start region before executing this closure. Here's the original code where `check_obj_during_refinement()` came from:
> 
> 
>   assert(_from != NULL, "from region must be non-NULL");
>   assert(_from->is_in_reserved(p) ||
>          (_from->is_humongous() &&
>           _g1->heap_region_containing(p)->is_humongous() &&
>           _from->humongous_start_region() == _g1->heap_region_containing(p)->humongous_start_region()),
>          "p " PTR_FORMAT " is not in the same region %u or part of the correct humongous object starting at region %u.",
>          p2i(p), _from->hrm_index(), _from->humongous_start_region()->hrm_index());
> 
> `_from` has been set at the instantiation of the closure, and for humongous objects may have been different than `heap_region_containing(p)` if `p` were in humongous continues regions.
> 
> I would suggest to reduce the code to
> 
> assert(g1h->is_in(p), "must be");
> 
> or `is_in_reserved()`.
> 
> (The former is what the call to `heap_region_containing` also verifies).

Yes, you are right. Additionally, I believe the same is true for `obj` as well, i.e. `assert(g1h->is_in(obj))`, instead of `is_in_reserved(obj)`.

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

PR: https://git.openjdk.org/jdk/pull/10551



More information about the hotspot-gc-dev mailing list