592 lrgs(r)._area -= cost; |
592 lrgs(r)._area -= cost; |
593 assert( lrgs(r)._area >= 0, "negative spill area" ); |
593 assert( lrgs(r)._area >= 0, "negative spill area" ); |
594 |
594 |
595 // Insure high score for immediate-use spill copies so they get a color |
595 // Insure high score for immediate-use spill copies so they get a color |
596 if( n->is_SpillCopy() |
596 if( n->is_SpillCopy() |
597 && lrgs(r)._def != NodeSentinel // MultiDef live range can still split |
597 && lrgs(r).is_singledef() // MultiDef live range can still split |
598 && n->outcnt() == 1 // and use must be in this block |
598 && n->outcnt() == 1 // and use must be in this block |
599 && _cfg._bbs[n->unique_out()->_idx] == b ) { |
599 && _cfg._bbs[n->unique_out()->_idx] == b ) { |
600 // All single-use MachSpillCopy(s) that immediately precede their |
600 // All single-use MachSpillCopy(s) that immediately precede their |
601 // use must color early. If a longer live range steals their |
601 // use must color early. If a longer live range steals their |
602 // color, the spill copy will split and may push another spill copy |
602 // color, the spill copy will split and may push another spill copy |