RFR: Skip RESOLVE in SATBBufferClosure if no forwarded objects are in heap

Aleksey Shipilev shade at redhat.com
Wed Jun 20 11:43:26 UTC 2018


On 06/20/2018 01:35 PM, Roman Kennke wrote:
> Am 20.06.2018 um 13:28 schrieb Aleksey Shipilev:
>> http://cr.openjdk.java.net/~shade/shenandoah/satb-no-rb/webrev.01/
>>
>> I see SATBBufferClosure::do_buffer hot in one of the workloads. One of the things that can be helped
>> there is avoiding RB-inducing RESOLVE when we know there are no forwarded objects in heap. Instead
>> of reintroducing the whole bunch of template parameters, it is easier to check once before
>> processing the entire SATB buffer.
>>
>> Testing: tier3_gc_shenandoah
>>
> 
> Ok, that makes sense.
> 
> I wonder if it makes even more sense to simply transfer the oops to the
> worker's taskqueue? I think we do this in traversal.

I don't think so: normal concurrent cycle does test if SATB objects are marked in due course in
mark_through_ref, which filters >3/4 of them. Traversal does it inline in SATB buffer handling.

-Aleksey




More information about the shenandoah-dev mailing list