equal
deleted
inserted
replaced
1962 assert(iff->is_If(), ""); |
1962 assert(iff->is_If(), ""); |
1963 ProjNode* dp = ((IfNode*)iff)->proj_out(1-flip); |
1963 ProjNode* dp = ((IfNode*)iff)->proj_out(1-flip); |
1964 // Find loads off the surviving projection; remove their control edge |
1964 // Find loads off the surviving projection; remove their control edge |
1965 for (DUIterator_Fast imax, i = dp->fast_outs(imax); i < imax; i++) { |
1965 for (DUIterator_Fast imax, i = dp->fast_outs(imax); i < imax; i++) { |
1966 Node* cd = dp->fast_out(i); // Control-dependent node |
1966 Node* cd = dp->fast_out(i); // Control-dependent node |
1967 if( cd->is_Load() ) { // Loads can now float around in the loop |
1967 if (cd->is_Load() && cd->depends_only_on_test()) { // Loads can now float around in the loop |
1968 // Allow the load to float around in the loop, or before it |
1968 // Allow the load to float around in the loop, or before it |
1969 // but NOT before the pre-loop. |
1969 // but NOT before the pre-loop. |
1970 _igvn.replace_input_of(cd, 0, ctrl); // ctrl, not NULL |
1970 _igvn.replace_input_of(cd, 0, ctrl); // ctrl, not NULL |
1971 --i; |
1971 --i; |
1972 --imax; |
1972 --imax; |