On Tue, 25 Apr 2023 15:29:08 GMT, Thomas Schatzl <tscha...@openjdk.org> wrote:

>> src/hotspot/share/gc/g1/g1HeapVerifier.cpp line 414:
>> 
>>> 412:       // There are no other valid region types. Check for one invalid
>>> 413:       // one we can identify before crashing: non-movable.
>>> 414:       assert(hr->is_young_gc_movable(), "Heap region %u is 
>>> non-movable.", hr->hrm_index());
>> 
>> Given this branch is unreachable, can one just use `fatal(...)` without a 
>> predicate?
>
>>The name, is_young_gc_movable, seems to suggest it is context sensitive. 
>>Maybe it's clearer if it's not defined as an API of heap-region, like other 
>>region-type-predicates.
> 
> It is defined in `G1Policy`, there is simply a shortcut via `HeapRegion`. I 
> considered removing that shortcut in `HeapRegion`, but then this would mean 
> lots of clutter everywhere to get to the policy object.
> 
> I will find a better location for a helper.
> 
>>
>>For example, it's odd to see them on the same abstraction level, when the two 
>>APIs refer to sth quite different.
>>
>>  assert(hr->is_young_gc_movable(), "Should only be movable region in 
>> compaction queue");
>>  assert(!hr->is_humongous(), "Should be no humongous regions in compaction 
>> queue");
>>
>>Additionally, it's confusing to see sth named "young_gc" in full-gc code 
>>(g1FullGCPrepareTask.inline.hpp).
> 
> I was too lazy to wrap it in a "movable-during-first-full-gc-attempt" method, 
> will fix. I thought the comment would be enough.
> 
>>
>>For this particular PR, could one just use !hr->is_humongous() where 
>>is_young_gc_movable is used? (Essentially, inlining >the new API.)
> 
> I do not like inlining this API because this looses the documentation of this 
> condition. One would probably need to add a "(At the moment) Humongous 
> regions are non-movable." comment everywhere to understand why that condition 
> is there.
> 
> Thanks,
>   Thomas

> Given this branch is unreachable, can one just use `fatal(...)` without a 
> predicate?

I also thought about this: the purpose of the additional assert is/was (I 
think) to fail with a better message than just crashing with some nondescript 
message, filtering out other possible cases. 
Will remove this after all.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13643#discussion_r1176693623

Reply via email to