comparison src/share/vm/opto/reg_split.cpp @ 12075:4b2838704fd5

8021898: Broken JIT compiler optimization for loop unswitching Summary: fix method clone_projs() to clone all related MachProj nodes. Reviewed-by: roland, adlertz
author kvn
date Fri, 16 Aug 2013 14:11:40 -0700
parents adb9a7d94cb5
children 650868c062a9
comparison
equal deleted inserted replaced
12074:d18b10b1fd09 12075:4b2838704fd5
395 // Increment the counter for this lrg 395 // Increment the counter for this lrg
396 splits.at_put(slidx, splits.at(slidx)+1); 396 splits.at_put(slidx, splits.at(slidx)+1);
397 #endif 397 #endif
398 // See if the cloned def kills any flags, and copy those kills as well 398 // See if the cloned def kills any flags, and copy those kills as well
399 uint i = insidx+1; 399 uint i = insidx+1;
400 if( clone_projs( b, i, def, spill, maxlrg) ) { 400 int found_projs = clone_projs( b, i, def, spill, maxlrg);
401 if (found_projs > 0) {
401 // Adjust the point where we go hi-pressure 402 // Adjust the point where we go hi-pressure
402 if( i <= b->_ihrp_index ) b->_ihrp_index++; 403 if (i <= b->_ihrp_index) {
403 if( i <= b->_fhrp_index ) b->_fhrp_index++; 404 b->_ihrp_index += found_projs;
405 }
406 if (i <= b->_fhrp_index) {
407 b->_fhrp_index += found_projs;
408 }
404 } 409 }
405 410
406 return spill; 411 return spill;
407 } 412 }
408 413