< prev index next >
src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
Print this page
rev 56032 : 8229970: ZGC: C2: fixup_uses_in_catch may fail when exanding many uses
Reviewed-by:
*** 988,1007 ****
}
// Process the loads successor nodes - if any is between
// the call and the catch blocks, they need to be cloned to.
// This is done recursively
! int outcnt = load->outcnt();
! uint index = 0;
! for (int i = 0; i < outcnt; i++) {
! if (index < load->outcnt()) {
! Node *n = load->raw_out(index);
assert(!n->is_LoadBarrier(), "Sanity");
if (!fixup_uses_in_catch(phase, ctrl, n)) {
// if no successor was cloned, progress to next out.
! index++;
! }
}
}
// Now all the loads uses has been cloned down
// Only thing left is to clone the loads, but they must end up
--- 988,1003 ----
}
// Process the loads successor nodes - if any is between
// the call and the catch blocks, they need to be cloned to.
// This is done recursively
! for (uint i = 0; i < load->outcnt();) {
! Node *n = load->raw_out(i);
assert(!n->is_LoadBarrier(), "Sanity");
if (!fixup_uses_in_catch(phase, ctrl, n)) {
// if no successor was cloned, progress to next out.
! i++;
}
}
// Now all the loads uses has been cloned down
// Only thing left is to clone the loads, but they must end up
< prev index next >