comparison src/share/vm/opto/coalesce.cpp @ 673:fbc12e71c476

6810845: Performance regression in mpegaudio on x64 Summary: Used the outer loop frequency in frequencies checks in RA. Reviewed-by: never, twisti
author kvn
date Thu, 26 Mar 2009 15:04:55 -0700
parents 98cb887364d3
children bd02caa94611
comparison
equal deleted inserted replaced
672:afd8dfb5c2a6 673:fbc12e71c476
471 } 471 }
472 472
473 } // End of is two-adr 473 } // End of is two-adr
474 474
475 // Insert a copy at a debug use for a lrg which has high frequency 475 // Insert a copy at a debug use for a lrg which has high frequency
476 if( (b->_freq < OPTO_DEBUG_SPLIT_FREQ) && n->is_MachSafePoint() ) { 476 if( b->_freq < OPTO_DEBUG_SPLIT_FREQ || b->is_uncommon(_phc._cfg._bbs) ) {
477 // Walk the debug inputs to the node and check for lrg freq 477 // Walk the debug inputs to the node and check for lrg freq
478 JVMState* jvms = n->jvms(); 478 JVMState* jvms = n->jvms();
479 uint debug_start = jvms ? jvms->debug_start() : 999999; 479 uint debug_start = jvms ? jvms->debug_start() : 999999;
480 uint debug_end = jvms ? jvms->debug_end() : 999999; 480 uint debug_end = jvms ? jvms->debug_end() : 999999;
481 for(uint inpidx = debug_start; inpidx < debug_end; inpidx++) { 481 for(uint inpidx = debug_start; inpidx < debug_end; inpidx++) {
485 Node *inp = n->in(inpidx); 485 Node *inp = n->in(inpidx);
486 uint nidx = _phc.n2lidx(inp); 486 uint nidx = _phc.n2lidx(inp);
487 LRG &lrg = lrgs(nidx); 487 LRG &lrg = lrgs(nidx);
488 488
489 // If this lrg has a high frequency use/def 489 // If this lrg has a high frequency use/def
490 if( lrg._maxfreq >= OPTO_LRG_HIGH_FREQ ) { 490 if( lrg._maxfreq >= _phc.high_frequency_lrg() ) {
491 // If the live range is also live out of this block (like it 491 // If the live range is also live out of this block (like it
492 // would be for a fast/slow idiom), the normal spill mechanism 492 // would be for a fast/slow idiom), the normal spill mechanism
493 // does an excellent job. If it is not live out of this block 493 // does an excellent job. If it is not live out of this block
494 // (like it would be for debug info to uncommon trap) splitting 494 // (like it would be for debug info to uncommon trap) splitting
495 // the live range now allows a better allocation in the high 495 // the live range now allows a better allocation in the high