Skip to content

Commit a2bb4c6

Browse files
committed
8254314: Shenandoah: null checks in c2 should not skip over native load barrier
Reviewed-by: rkennke
1 parent c73a0ff commit a2bb4c6

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,10 +1058,12 @@ Node* ShenandoahBarrierSetC2::ideal_node(PhaseGVN* phase, Node* n, bool can_resh
10581058
if (n->Opcode() == Op_CmpP) {
10591059
Node* in1 = n->in(1);
10601060
Node* in2 = n->in(2);
1061-
if (in1->bottom_type() == TypePtr::NULL_PTR) {
1061+
if (in1->bottom_type() == TypePtr::NULL_PTR &&
1062+
(in1->Opcode() != Op_ShenandoahLoadReferenceBarrier || !((ShenandoahLoadReferenceBarrierNode*)in1)->is_native())) {
10621063
in2 = step_over_gc_barrier(in2);
10631064
}
1064-
if (in2->bottom_type() == TypePtr::NULL_PTR) {
1065+
if (in2->bottom_type() == TypePtr::NULL_PTR &&
1066+
(in2->Opcode() != Op_ShenandoahLoadReferenceBarrier || !((ShenandoahLoadReferenceBarrierNode*)in2)->is_native())) {
10651067
in1 = step_over_gc_barrier(in1);
10661068
}
10671069
PhaseIterGVN* igvn = phase->is_IterGVN();

0 commit comments

Comments
 (0)