RFR: 8255534: Shenandoah: Fix CmpP optimization wrt native-LRB

Roman Kennke rkennke at openjdk.java.net
Wed Oct 28 12:39:51 UTC 2020


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)

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

Commit messages:
 - 8255534: Shenandoah: Fix CmpP optimization wrt native-LRB

Changes: https://git.openjdk.java.net/jdk/pull/902/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=902&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8255534
  Stats: 17 lines in 2 files changed: 9 ins; 6 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/902.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/902/head:pull/902

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


More information about the shenandoah-dev mailing list