< 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 >