RFR: 8255534: Shenandoah: Fix CmpP optimization wrt native-LRB [v3]

Aleksey Shipilev shade at openjdk.java.net
Thu Oct 29 11:08:01 UTC 2020


On Thu, 29 Oct 2020 11:05:01 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> JDK-8254314 introduced the following code:
>> 
>>     if (in1->bottom_type() == TypePtr::NULL_PTR &&
>>         (in1->Opcode() != Op_ShenandoahLoadReferenceBarrier || !((ShenandoahLoadReferenceBarrierNode*)in1)->is_native())) {
>>       in2 = step_over_gc_barrier(in2);
>>     }
>> 
>> However, the check for LRB and !native are the wrong way around: they should check if *in2* are not native LRB.
>> 
>> The bug is currently only observed in the conc-weakrefs branch, but may manifest (rarely) in mainline too. 
>> 
>> I am also putting in some refactoring to avoid duped code for good measure.
>> 
>> Testing: hotspot_gc_shenandoah (also in conc-weakrefs-branch where it manifests)
>
> Roman Kennke has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Inline (i.e. revert) maybe_step_over_cmpp_inputs()
>  - Clarify comment in maybe_step_over_cmpp_inputs()

Marked as reviewed by shade (Reviewer).

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

PR: https://git.openjdk.java.net/jdk/pull/902


More information about the shenandoah-dev mailing list