[master] RFR: Implement sliding forwarding scheme that preserves upper header bits [v14]

Roman Kennke rkennke at openjdk.java.net
Wed Jul 7 19:47:35 UTC 2021


On Wed, 7 Jul 2021 17:01:48 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> Roman Kennke has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Some cosmetic fixes
>
> src/hotspot/share/gc/g1/g1FullGCOopClosures.inline.hpp line 92:
> 
>> 90:   // Forwarded, just update.
>> 91:   oop forwardee = _forwarding->forwardee(obj);
>> 92:   assert(G1CollectedHeap::heap()->is_in_reserved(forwardee), "should be in object space: " PTR_FORMAT "(" PTR_FORMAT ", " PTR_FORMAT ") " INTPTR_FORMAT, p2i(forwardee), p2i(G1CollectedHeap::heap()->reserved().start()), p2i(G1CollectedHeap::heap()->reserved().end()), obj->mark().value());
> 
> Style: break the line here.

I'd rather remove the new debug output.

> src/hotspot/share/gc/shared/preservedMarks.hpp line 67:
> 
>> 65:   // Iterate over the stack, adjust all preserved marks according
>> 66:   // to their forwarding location stored in the mark.
>> 67:   void adjust_during_full_gc();
> 
> Does this method have any uses? Should those be updated to use `forwarding`? If not, it should be removed for safety?

Actually not, except in a unit test. This test should be written to use a forwarding instead, but this probably requires a mockable/abstract forwarding that can be plugged in for the purpose of the test. I added TODOs and postpone this to later.

> test/hotspot/jtreg/gc/stress/TestMultiThreadStressRSet.java line 52:
> 
>> 50:  * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
>> 51:  *   -XX:+UseG1GC -XX:G1SummarizeRSetStatsPeriod=100 -Xlog:gc
>> 52:  *   -Xmx1100M -XX:G1HeapRegionSize=8m -XX:MaxGCPauseMillis=1000 gc.stress.TestMultiThreadStressRSet 60 16
> 
> Why this change?

This is related to disabling the last-last-ditch serial full GC. Apparently, in the old configuration, the serial-full-GC would free enough remaining regions to make this test work. Without the change, it runs into OOM.

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

PR: https://git.openjdk.java.net/lilliput/pull/8


More information about the lilliput-dev mailing list