comparison src/share/vm/opto/loopTransform.cpp @ 17810:62c54fcc0a35

Merge
author kvn
date Tue, 25 Mar 2014 17:07:36 -0700
parents a9becfeecd1b 606acabe7b5c
children cd3c534f8f4a
comparison
equal deleted inserted replaced
17809:a433eb716ce1 17810:62c54fcc0a35
615 case Op_StrIndexOf: 615 case Op_StrIndexOf:
616 case Op_EncodeISOArray: 616 case Op_EncodeISOArray:
617 case Op_AryEq: { 617 case Op_AryEq: {
618 return false; 618 return false;
619 } 619 }
620 #if INCLUDE_RTM_OPT
621 case Op_FastLock:
622 case Op_FastUnlock: {
623 // Don't unroll RTM locking code because it is large.
624 if (UseRTMLocking) {
625 return false;
626 }
627 }
628 #endif
620 } // switch 629 } // switch
621 } 630 }
622 631
623 return true; // Do maximally unroll 632 return true; // Do maximally unroll
624 } 633 }
711 switch (n->Opcode()) { 720 switch (n->Opcode()) {
712 case Op_XorI: xors_in_loop++; break; // CRC32 java code 721 case Op_XorI: xors_in_loop++; break; // CRC32 java code
713 case Op_ModL: body_size += 30; break; 722 case Op_ModL: body_size += 30; break;
714 case Op_DivL: body_size += 30; break; 723 case Op_DivL: body_size += 30; break;
715 case Op_MulL: body_size += 10; break; 724 case Op_MulL: body_size += 10; break;
716 case Op_FlagsProj:
717 // Can't handle unrolling of loops containing
718 // nodes that generate a FlagsProj at the moment
719 return false;
720 case Op_StrComp: 725 case Op_StrComp:
721 case Op_StrEquals: 726 case Op_StrEquals:
722 case Op_StrIndexOf: 727 case Op_StrIndexOf:
723 case Op_EncodeISOArray: 728 case Op_EncodeISOArray:
724 case Op_AryEq: { 729 case Op_AryEq: {
725 // Do not unroll a loop with String intrinsics code. 730 // Do not unroll a loop with String intrinsics code.
726 // String intrinsics are large and have loops. 731 // String intrinsics are large and have loops.
727 return false; 732 return false;
728 } 733 }
734 #if INCLUDE_RTM_OPT
735 case Op_FastLock:
736 case Op_FastUnlock: {
737 // Don't unroll RTM locking code because it is large.
738 if (UseRTMLocking) {
739 return false;
740 }
741 }
742 #endif
729 } // switch 743 } // switch
730 } 744 }
731 745
732 // Check for being too big 746 // Check for being too big
733 if (body_size > (uint)LoopUnrollLimit) { 747 if (body_size > (uint)LoopUnrollLimit) {
778 } 792 }
779 if (bol->as_Bool()->_test._test == BoolTest::ne) 793 if (bol->as_Bool()->_test._test == BoolTest::ne)
780 continue; // not RC 794 continue; // not RC
781 795
782 Node *cmp = bol->in(1); 796 Node *cmp = bol->in(1);
783 if (cmp->is_FlagsProj()) {
784 continue;
785 }
786
787 Node *rc_exp = cmp->in(1); 797 Node *rc_exp = cmp->in(1);
788 Node *limit = cmp->in(2); 798 Node *limit = cmp->in(2);
789 799
790 Node *limit_c = phase->get_ctrl(limit); 800 Node *limit_c = phase->get_ctrl(limit);
791 if( limit_c == phase->C->top() ) 801 if( limit_c == phase->C->top() )