< 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 >