src/share/vm/opto/loopopts.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/loopopts.cpp	Mon Jun  9 10:05:24 2014
--- new/src/share/vm/opto/loopopts.cpp	Mon Jun  9 10:05:24 2014

*** 1401,1411 **** --- 1401,1412 ---- // If the Data use is an IF, that means we have an IF outside of the // loop that is switching on a condition that is set inside of the // loop. Happens if people set a loop-exit flag; then test the flag // in the loop to break the loop, then test is again outside of the // loop to determine which way the loop exited. if( use->is_If() || use->is_CMove() ) { + // Loop predicate If node connectes to Bool node through Opaque1 node. + if(use->is_If() || use->is_CMove() || C->is_predicate_opaq(use)) { // Since this code is highly unlikely, we lazily build the worklist // of such Nodes to go split. if( !split_if_set ) split_if_set = new Node_List(area); split_if_set->push(use);

src/share/vm/opto/loopopts.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File