< prev index next >
src/hotspot/share/opto/phaseX.cpp
Print this page
rev 53307 : Backport Shenadoah GC
*** 1382,1392 ****
i++;
}
assert(!(i < imax), "sanity");
}
} else {
! BarrierSet::barrier_set()->barrier_set_c2()->enqueue_useful_gc_barrier(_worklist, in);
}
if (ReduceFieldZeroing && dead->is_Load() && i == MemNode::Memory &&
in->is_Proj() && in->in(0) != NULL && in->in(0)->is_Initialize()) {
// A Load that directly follows an InitializeNode is
// going away. The Stores that follow are candidates
--- 1382,1392 ----
i++;
}
assert(!(i < imax), "sanity");
}
} else {
! BarrierSet::barrier_set()->barrier_set_c2()->enqueue_useful_gc_barrier(this, in);
}
if (ReduceFieldZeroing && dead->is_Load() && i == MemNode::Memory &&
in->is_Proj() && in->in(0) != NULL && in->in(0)->is_Initialize()) {
// A Load that directly follows an InitializeNode is
// going away. The Stores that follow are candidates
*** 1671,1680 ****
--- 1671,1688 ----
}
_worklist.push(u);
}
}
}
+
+ // TODO: Needed after the block above?
+ if (use->is_ShenandoahBarrier()) {
+ Node* cmp = use->find_out_with(Op_CmpP);
+ if (cmp != NULL) {
+ _worklist.push(cmp);
+ }
+ }
}
}
/**
* Remove the speculative part of all types that we know of
*** 2102,2111 ****
--- 2110,2123 ----
}
break;
default:
break;
}
+ if (UseShenandoahGC) {
+ // TODO: Should we call this for ZGC as well?
+ BarrierSet::barrier_set()->barrier_set_c2()->enqueue_useful_gc_barrier(igvn, old);
+ }
}
}
//-------------------------------replace_by-----------------------------------
< prev index next >