Mercurial > hg > truffle
comparison src/share/vm/opto/ifg.cpp @ 8867:b808febcad9a
8010281: Remove code that is never executed
Reviewed-by: kvn, roland
Contributed-by: niclas.adlertz@oracle.com
author | neliasso |
---|---|
date | Tue, 26 Mar 2013 10:05:33 +0100 |
parents | 2aff40cb4703 |
children | 8373c19be854 |
comparison
equal
deleted
inserted
replaced
8866:16885e702c88 | 8867:b808febcad9a |
---|---|
34 #include "opto/connode.hpp" | 34 #include "opto/connode.hpp" |
35 #include "opto/indexSet.hpp" | 35 #include "opto/indexSet.hpp" |
36 #include "opto/machnode.hpp" | 36 #include "opto/machnode.hpp" |
37 #include "opto/memnode.hpp" | 37 #include "opto/memnode.hpp" |
38 #include "opto/opcodes.hpp" | 38 #include "opto/opcodes.hpp" |
39 | |
40 #define EXACT_PRESSURE 1 | |
41 | 39 |
42 //============================================================================= | 40 //============================================================================= |
43 //------------------------------IFG-------------------------------------------- | 41 //------------------------------IFG-------------------------------------------- |
44 PhaseIFG::PhaseIFG( Arena *arena ) : Phase(Interference_Graph), _arena(arena) { | 42 PhaseIFG::PhaseIFG( Arena *arena ) : Phase(Interference_Graph), _arena(arena) { |
45 } | 43 } |
443 if (lrg->mask().is_UP() && lrg->mask_size()) { | 441 if (lrg->mask().is_UP() && lrg->mask_size()) { |
444 if (lrg->_is_float || lrg->_is_vector) { | 442 if (lrg->_is_float || lrg->_is_vector) { |
445 pressure[1] -= lrg->reg_pressure(); | 443 pressure[1] -= lrg->reg_pressure(); |
446 if( pressure[1] == (uint)FLOATPRESSURE ) { | 444 if( pressure[1] == (uint)FLOATPRESSURE ) { |
447 hrp_index[1] = where; | 445 hrp_index[1] = where; |
448 #ifdef EXACT_PRESSURE | 446 if( pressure[1] > b->_freg_pressure ) |
449 if( pressure[1] > b->_freg_pressure ) | 447 b->_freg_pressure = pressure[1]+1; |
450 b->_freg_pressure = pressure[1]+1; | |
451 #else | |
452 b->_freg_pressure = (uint)FLOATPRESSURE+1; | |
453 #endif | |
454 } | 448 } |
455 } else if( lrg->mask().overlap(*Matcher::idealreg2regmask[Op_RegI]) ) { | 449 } else if( lrg->mask().overlap(*Matcher::idealreg2regmask[Op_RegI]) ) { |
456 pressure[0] -= lrg->reg_pressure(); | 450 pressure[0] -= lrg->reg_pressure(); |
457 if( pressure[0] == (uint)INTPRESSURE ) { | 451 if( pressure[0] == (uint)INTPRESSURE ) { |
458 hrp_index[0] = where; | 452 hrp_index[0] = where; |
459 #ifdef EXACT_PRESSURE | 453 if( pressure[0] > b->_reg_pressure ) |
460 if( pressure[0] > b->_reg_pressure ) | 454 b->_reg_pressure = pressure[0]+1; |
461 b->_reg_pressure = pressure[0]+1; | |
462 #else | |
463 b->_reg_pressure = (uint)INTPRESSURE+1; | |
464 #endif | |
465 } | 455 } |
466 } | 456 } |
467 } | 457 } |
468 } | 458 } |
469 | 459 |
524 lrg._area += cost; | 514 lrg._area += cost; |
525 // Compute initial register pressure | 515 // Compute initial register pressure |
526 if (lrg.mask().is_UP() && lrg.mask_size()) { | 516 if (lrg.mask().is_UP() && lrg.mask_size()) { |
527 if (lrg._is_float || lrg._is_vector) { // Count float pressure | 517 if (lrg._is_float || lrg._is_vector) { // Count float pressure |
528 pressure[1] += lrg.reg_pressure(); | 518 pressure[1] += lrg.reg_pressure(); |
529 #ifdef EXACT_PRESSURE | |
530 if( pressure[1] > b->_freg_pressure ) | 519 if( pressure[1] > b->_freg_pressure ) |
531 b->_freg_pressure = pressure[1]; | 520 b->_freg_pressure = pressure[1]; |
532 #endif | |
533 // Count int pressure, but do not count the SP, flags | 521 // Count int pressure, but do not count the SP, flags |
534 } else if( lrgs(lidx).mask().overlap(*Matcher::idealreg2regmask[Op_RegI]) ) { | 522 } else if( lrgs(lidx).mask().overlap(*Matcher::idealreg2regmask[Op_RegI]) ) { |
535 pressure[0] += lrg.reg_pressure(); | 523 pressure[0] += lrg.reg_pressure(); |
536 #ifdef EXACT_PRESSURE | |
537 if( pressure[0] > b->_reg_pressure ) | 524 if( pressure[0] > b->_reg_pressure ) |
538 b->_reg_pressure = pressure[0]; | 525 b->_reg_pressure = pressure[0]; |
539 #endif | |
540 } | 526 } |
541 } | 527 } |
542 } | 528 } |
543 assert( pressure[0] == count_int_pressure (&liveout), "" ); | 529 assert( pressure[0] == count_int_pressure (&liveout), "" ); |
544 assert( pressure[1] == count_float_pressure(&liveout), "" ); | 530 assert( pressure[1] == count_float_pressure(&liveout), "" ); |
587 if( lrgs(r)._fat_proj ) { | 573 if( lrgs(r)._fat_proj ) { |
588 // Count the int-only registers | 574 // Count the int-only registers |
589 RegMask itmp = lrgs(r).mask(); | 575 RegMask itmp = lrgs(r).mask(); |
590 itmp.AND(*Matcher::idealreg2regmask[Op_RegI]); | 576 itmp.AND(*Matcher::idealreg2regmask[Op_RegI]); |
591 int iregs = itmp.Size(); | 577 int iregs = itmp.Size(); |
592 #ifdef EXACT_PRESSURE | |
593 if( pressure[0]+iregs > b->_reg_pressure ) | 578 if( pressure[0]+iregs > b->_reg_pressure ) |
594 b->_reg_pressure = pressure[0]+iregs; | 579 b->_reg_pressure = pressure[0]+iregs; |
595 #endif | |
596 if( pressure[0] <= (uint)INTPRESSURE && | 580 if( pressure[0] <= (uint)INTPRESSURE && |
597 pressure[0]+iregs > (uint)INTPRESSURE ) { | 581 pressure[0]+iregs > (uint)INTPRESSURE ) { |
598 #ifndef EXACT_PRESSURE | |
599 b->_reg_pressure = (uint)INTPRESSURE+1; | |
600 #endif | |
601 hrp_index[0] = j-1; | 582 hrp_index[0] = j-1; |
602 } | 583 } |
603 // Count the float-only registers | 584 // Count the float-only registers |
604 RegMask ftmp = lrgs(r).mask(); | 585 RegMask ftmp = lrgs(r).mask(); |
605 ftmp.AND(*Matcher::idealreg2regmask[Op_RegD]); | 586 ftmp.AND(*Matcher::idealreg2regmask[Op_RegD]); |
606 int fregs = ftmp.Size(); | 587 int fregs = ftmp.Size(); |
607 #ifdef EXACT_PRESSURE | |
608 if( pressure[1]+fregs > b->_freg_pressure ) | 588 if( pressure[1]+fregs > b->_freg_pressure ) |
609 b->_freg_pressure = pressure[1]+fregs; | 589 b->_freg_pressure = pressure[1]+fregs; |
610 #endif | |
611 if( pressure[1] <= (uint)FLOATPRESSURE && | 590 if( pressure[1] <= (uint)FLOATPRESSURE && |
612 pressure[1]+fregs > (uint)FLOATPRESSURE ) { | 591 pressure[1]+fregs > (uint)FLOATPRESSURE ) { |
613 #ifndef EXACT_PRESSURE | |
614 b->_freg_pressure = (uint)FLOATPRESSURE+1; | |
615 #endif | |
616 hrp_index[1] = j-1; | 592 hrp_index[1] = j-1; |
617 } | 593 } |
618 } | 594 } |
619 | 595 |
620 } else { // Else it is live | 596 } else { // Else it is live |
767 lrg._area += cost; | 743 lrg._area += cost; |
768 // Adjust register pressure | 744 // Adjust register pressure |
769 if (lrg.mask().is_UP() && lrg.mask_size()) { | 745 if (lrg.mask().is_UP() && lrg.mask_size()) { |
770 if (lrg._is_float || lrg._is_vector) { | 746 if (lrg._is_float || lrg._is_vector) { |
771 pressure[1] += lrg.reg_pressure(); | 747 pressure[1] += lrg.reg_pressure(); |
772 #ifdef EXACT_PRESSURE | |
773 if( pressure[1] > b->_freg_pressure ) | 748 if( pressure[1] > b->_freg_pressure ) |
774 b->_freg_pressure = pressure[1]; | 749 b->_freg_pressure = pressure[1]; |
775 #endif | |
776 } else if( lrg.mask().overlap(*Matcher::idealreg2regmask[Op_RegI]) ) { | 750 } else if( lrg.mask().overlap(*Matcher::idealreg2regmask[Op_RegI]) ) { |
777 pressure[0] += lrg.reg_pressure(); | 751 pressure[0] += lrg.reg_pressure(); |
778 #ifdef EXACT_PRESSURE | |
779 if( pressure[0] > b->_reg_pressure ) | 752 if( pressure[0] > b->_reg_pressure ) |
780 b->_reg_pressure = pressure[0]; | 753 b->_reg_pressure = pressure[0]; |
781 #endif | |
782 } | 754 } |
783 } | 755 } |
784 assert( pressure[0] == count_int_pressure (&liveout), "" ); | 756 assert( pressure[0] == count_int_pressure (&liveout), "" ); |
785 assert( pressure[1] == count_float_pressure(&liveout), "" ); | 757 assert( pressure[1] == count_float_pressure(&liveout), "" ); |
786 } | 758 } |
792 // If we run off the top of the block with high pressure and | 764 // If we run off the top of the block with high pressure and |
793 // never see a hi-to-low pressure transition, just record that | 765 // never see a hi-to-low pressure transition, just record that |
794 // the whole block is high pressure. | 766 // the whole block is high pressure. |
795 if( pressure[0] > (uint)INTPRESSURE ) { | 767 if( pressure[0] > (uint)INTPRESSURE ) { |
796 hrp_index[0] = 0; | 768 hrp_index[0] = 0; |
797 #ifdef EXACT_PRESSURE | |
798 if( pressure[0] > b->_reg_pressure ) | 769 if( pressure[0] > b->_reg_pressure ) |
799 b->_reg_pressure = pressure[0]; | 770 b->_reg_pressure = pressure[0]; |
800 #else | |
801 b->_reg_pressure = (uint)INTPRESSURE+1; | |
802 #endif | |
803 } | 771 } |
804 if( pressure[1] > (uint)FLOATPRESSURE ) { | 772 if( pressure[1] > (uint)FLOATPRESSURE ) { |
805 hrp_index[1] = 0; | 773 hrp_index[1] = 0; |
806 #ifdef EXACT_PRESSURE | |
807 if( pressure[1] > b->_freg_pressure ) | 774 if( pressure[1] > b->_freg_pressure ) |
808 b->_freg_pressure = pressure[1]; | 775 b->_freg_pressure = pressure[1]; |
809 #else | |
810 b->_freg_pressure = (uint)FLOATPRESSURE+1; | |
811 #endif | |
812 } | 776 } |
813 | 777 |
814 // Compute high pressure indice; avoid landing in the middle of projnodes | 778 // Compute high pressure indice; avoid landing in the middle of projnodes |
815 j = hrp_index[0]; | 779 j = hrp_index[0]; |
816 if( j < b->_nodes.size() && j < b->end_idx()+1 ) { | 780 if( j < b->_nodes.size() && j < b->end_idx()+1 ) { |