< prev index next >
src/hotspot/share/opto/phaseX.cpp
BarrierSetC2_enhancements
* 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"
***************
#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) :
***************
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.
*/
***************
_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
***************
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 >