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;
608 if ((int)_framesize > _max_framesize) {
609 _max_framesize = _framesize;
610 }
611 #endif
612
613 // Convert CISC spills
614 fixup_spills();
615
616 // Log regalloc results
617 CompileLog* log = Compile::current()->log();
618 if (log != NULL) {
619 log->elem("regalloc attempts='%d' success='%d'", _trip_cnt, !C->failing());
620 }
621
622 if (C->failing()) {
623 return;
624 }
625
|
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 <= 1000000, "sanity check");
606 #ifndef PRODUCT
607 _total_framesize += _framesize;
608 if ((int)_framesize > _max_framesize) {
609 _max_framesize = _framesize;
610 }
611 #endif
612
613 // Convert CISC spills
614 fixup_spills();
615
616 // Log regalloc results
617 CompileLog* log = Compile::current()->log();
618 if (log != NULL) {
619 log->elem("regalloc attempts='%d' success='%d'", _trip_cnt, !C->failing());
620 }
621
622 if (C->failing()) {
623 return;
624 }
625
|