< prev index next >

src/hotspot/share/opto/phaseX.cpp

BarrierSetC2_enhancements

*** 21,30 **** --- 21,32 ---- * questions. * */ #include "precompiled.hpp" + #include "gc/shared/barrierSet.hpp" + #include "gc/shared/c2/barrierSetC2.hpp" #include "memory/allocation.inline.hpp" #include "memory/resourceArea.hpp" #include "opto/block.hpp" #include "opto/callnode.hpp" #include "opto/castnode.hpp" ***************
*** 34,43 **** --- 36,46 ---- #include "opto/machnode.hpp" #include "opto/opcodes.hpp" #include "opto/phaseX.hpp" #include "opto/regalloc.hpp" #include "opto/rootnode.hpp" + #include "utilities/macros.hpp" //============================================================================= #define NODE_HASH_MINIMUM_SIZE 255 //------------------------------NodeHash--------------------------------------- NodeHash::NodeHash(uint est_max_size) : ***************
*** 937,946 **** --- 940,952 ---- if( uop == Op_Phi || uop == Op_Region || n->is_Type() || n->is_Mem() ) add_users_to_worklist(n); } + + BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); + bs->add_users_to_worklist(&_worklist); } /** * Initialize worklist for each node. */ ***************
*** 1367,1376 **** --- 1373,1384 ---- _worklist.push(in->fast_out(i)); 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 ***************
*** 1422,1431 **** --- 1430,1441 ---- C->remove_range_check_cast(cast); } if (dead->Opcode() == Op_Opaque4) { C->remove_opaque4_node(dead); } + BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); + bs->unregister_potential_barrier_node(dead); } } // while (_stack.is_nonempty()) } //------------------------------subsume_node-----------------------------------
< prev index next >