On Mon, 6 Nov 2023 18:15:00 GMT, Roman Kennke <rken...@openjdk.org> wrote:

>> See JBS issue for details.
>> 
>> Testing:
>>  - [x] gc/logging/TestUnifiedLoggingSwitchStress.java -XX:+UseParallelGC
>>  - [x] tier1 -XX:+UseParallelGC
>>  - [ ] tier2 -XX:+UseParallelGC
>>  - [ ] hotspot_gc
>
> Roman Kennke has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Restore forwardings after failed promotions

> I don't get the assertion any more after adding the following to 
> `PSScavenge::clean_up_failed_promotion`:
> 
> ```c++
>   ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
> 
>   struct ResetForwardedMarkWord : ObjectClosure {
>     void do_object(oop obj) override {
>       if (obj->is_forwarded()) {
>         obj->init_mark();
>       }
>     }
>   } cl;
> 
>   heap->young_gen()->eden_space()->object_iterate(&cl);
>   heap->young_gen()->from_space()->object_iterate(&cl);
> ```
> 
> (Essentially copied from Serial.)

Nice, I changed this PR accordingly.

I'm curious (and puzzled), though. How would this situation normally have been 
repaired without this explicit header-resetting code? Would the 
failed-promotion slide directly into full-GC which repairs it? OTOH, I don't 
even see code in paralle mark-compact which would explicitely repair 
forwardings.

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

PR Comment: https://git.openjdk.org/jdk/pull/16494#issuecomment-1796198151

Reply via email to