< prev index next > src/hotspot/share/opto/macro.cpp
Print this page
}
if (val == mem) {
values.at_put(j, mem);
} else if (val->is_Store()) {
Node* n = val->in(MemNode::ValueIn);
- BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
- n = bs->step_over_gc_barrier(n);
if (is_subword_type(ft)) {
n = Compile::narrow_value(ft, n, phi_type, &_igvn, true);
}
values.at_put(j, n);
} else if(val->is_Proj() && val->in(0) == alloc) {
if (mem != nullptr) {
if (mem == start_mem || mem == alloc_mem) {
// hit a sentinel, return appropriate 0 value
return _igvn.zerocon(ft);
} else if (mem->is_Store()) {
- Node* n = mem->in(MemNode::ValueIn);
- BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
- n = bs->step_over_gc_barrier(n);
- return n;
+ return mem->in(MemNode::ValueIn);
} else if (mem->is_Phi()) {
// attempt to produce a Phi reflecting the values on the input paths of the Phi
Node_Stack value_phis(8);
Node* phi = value_from_mem_phi(mem, ft, ftype, adr_t, alloc, &value_phis, ValueSearchLimit);
if (phi != nullptr) {
break;
}
for (DUIterator_Fast kmax, k = use->fast_outs(kmax);
k < kmax && can_eliminate; k++) {
Node* n = use->fast_out(k);
- if (!n->is_Store() && n->Opcode() != Op_CastP2X && !bs->is_gc_pre_barrier_node(n) && !reduce_merge_precheck) {
+ if (!n->is_Store() && n->Opcode() != Op_CastP2X && !reduce_merge_precheck) {
DEBUG_ONLY(disq_node = n;)
if (n->is_Load() || n->is_LoadStore()) {
NOT_PRODUCT(fail_eliminate = "Field load";)
} else {
NOT_PRODUCT(fail_eliminate = "Not store field reference";)
< prev index next >