565 verify(&live_arena, true); 566 #endif 567 cache_lrg_info(); // Count degree of LRGs 568 569 // Simplify the InterFerence Graph by removing LRGs of low degree. 570 // LRGs of low degree are trivially colorable. 571 Simplify(); 572 573 // Select colors by re-inserting LRGs back into the IFG in reverse order. 574 // Return whether or not something spills. 575 spills = Select(); 576 } 577 578 // Count number of Simplify-Select trips per coloring success. 579 _allocator_attempts += _trip_cnt + 1; 580 _allocator_successes += 1; 581 582 // Peephole remove copies 583 post_allocate_copy_removal(); 584 585 #ifdef ASSERT 586 // Veify the graph after RA. 587 verify(&live_arena); 588 #endif 589 590 // max_reg is past the largest *register* used. 591 // Convert that to a frame_slot number. 592 if (_max_reg <= _matcher._new_SP) { 593 _framesize = C->out_preserve_stack_slots(); 594 } 595 else { 596 _framesize = _max_reg -_matcher._new_SP; 597 } 598 assert((int)(_matcher._new_SP+_framesize) >= (int)_matcher._out_arg_limit, "framesize must be large enough"); 599 600 // This frame must preserve the required fp alignment 601 _framesize = round_to(_framesize, Matcher::stack_alignment_in_slots()); 602 assert( _framesize >= 0 && _framesize <= 1000000, "sanity check" ); 603 #ifndef PRODUCT 604 _total_framesize += _framesize; | 565 verify(&live_arena, true); 566 #endif 567 cache_lrg_info(); // Count degree of LRGs 568 569 // Simplify the InterFerence Graph by removing LRGs of low degree. 570 // LRGs of low degree are trivially colorable. 571 Simplify(); 572 573 // Select colors by re-inserting LRGs back into the IFG in reverse order. 574 // Return whether or not something spills. 575 spills = Select(); 576 } 577 578 // Count number of Simplify-Select trips per coloring success. 579 _allocator_attempts += _trip_cnt + 1; 580 _allocator_successes += 1; 581 582 // Peephole remove copies 583 post_allocate_copy_removal(); 584 585 // Merge multidefs if multiple defs representing the same value are used in a single block. 586 merge_multidefs(); 587 588 #ifdef ASSERT 589 // Veify the graph after RA. 590 verify(&live_arena); 591 #endif 592 593 // max_reg is past the largest *register* used. 594 // Convert that to a frame_slot number. 595 if (_max_reg <= _matcher._new_SP) { 596 _framesize = C->out_preserve_stack_slots(); 597 } 598 else { 599 _framesize = _max_reg -_matcher._new_SP; 600 } 601 assert((int)(_matcher._new_SP+_framesize) >= (int)_matcher._out_arg_limit, "framesize must be large enough"); 602 603 // This frame must preserve the required fp alignment 604 _framesize = round_to(_framesize, Matcher::stack_alignment_in_slots()); 605 assert( _framesize >= 0 && _framesize <= 1000000, "sanity check" ); 606 #ifndef PRODUCT 607 _total_framesize += _framesize; |