< prev index next >
src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
Print this page
*** 994,1006 ****
assert(step_over_gc_barrier(result_phi) == in_val, "sanity");
return;
}
! bool ZBarrierSetC2::expand_macro_nodes(PhaseMacroExpand* macro) const {
! Compile* C = Compile::current();
! PhaseIterGVN &igvn = macro->igvn();
ZBarrierSetC2State* s = state();
if (s->load_barrier_count() > 0) {
#ifdef ASSERT
verify_gc_barriers(false);
#endif
--- 994,1005 ----
assert(step_over_gc_barrier(result_phi) == in_val, "sanity");
return;
}
! bool ZBarrierSetC2::expand_barriers(Compile* C, PhaseIterGVN& igvn) const {
! PhaseMacroExpand macro(igvn);
ZBarrierSetC2State* s = state();
if (s->load_barrier_count() > 0) {
#ifdef ASSERT
verify_gc_barriers(false);
#endif
*** 1016,1035 ****
}
if (!n->can_be_eliminated()) {
skipped++;
continue;
}
! expand_loadbarrier_node(macro, n);
assert(s->load_barrier_count() < load_barrier_count, "must have deleted a node from load barrier list");
if (C->failing()) return true;
}
while (s->load_barrier_count() > 0) {
int load_barrier_count = s->load_barrier_count();
LoadBarrierNode* n = s->load_barrier_node(load_barrier_count - 1);
assert(!(igvn.type(n) == Type::TOP || (n->in(0) != NULL && n->in(0)->is_top())), "should have been processed already");
assert(!n->can_be_eliminated(), "should have been processed already");
! expand_loadbarrier_node(macro, n);
assert(s->load_barrier_count() < load_barrier_count, "must have deleted a node from load barrier list");
if (C->failing()) return true;
}
igvn.set_delay_transform(false);
igvn.optimize();
--- 1015,1034 ----
}
if (!n->can_be_eliminated()) {
skipped++;
continue;
}
! expand_loadbarrier_node(¯o, n);
assert(s->load_barrier_count() < load_barrier_count, "must have deleted a node from load barrier list");
if (C->failing()) return true;
}
while (s->load_barrier_count() > 0) {
int load_barrier_count = s->load_barrier_count();
LoadBarrierNode* n = s->load_barrier_node(load_barrier_count - 1);
assert(!(igvn.type(n) == Type::TOP || (n->in(0) != NULL && n->in(0)->is_top())), "should have been processed already");
assert(!n->can_be_eliminated(), "should have been processed already");
! expand_loadbarrier_node(¯o, n);
assert(s->load_barrier_count() < load_barrier_count, "must have deleted a node from load barrier list");
if (C->failing()) return true;
}
igvn.set_delay_transform(false);
igvn.optimize();
< prev index next >