comparison src/share/vm/opto/loopTransform.cpp @ 14495:cd5d10655495

8027754: Enable loop optimizations for loops with MathExact inside Reviewed-by: kvn, iveresov
author rbackman
date Thu, 23 Jan 2014 12:08:28 +0100
parents abec000618bf
children 4ca6dc0799b6
comparison
equal deleted inserted replaced
14494:5292439ef895 14495:cd5d10655495
711 switch (n->Opcode()) { 711 switch (n->Opcode()) {
712 case Op_XorI: xors_in_loop++; break; // CRC32 java code 712 case Op_XorI: xors_in_loop++; break; // CRC32 java code
713 case Op_ModL: body_size += 30; break; 713 case Op_ModL: body_size += 30; break;
714 case Op_DivL: body_size += 30; break; 714 case Op_DivL: body_size += 30; break;
715 case Op_MulL: body_size += 10; break; 715 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: 716 case Op_StrComp:
721 case Op_StrEquals: 717 case Op_StrEquals:
722 case Op_StrIndexOf: 718 case Op_StrIndexOf:
723 case Op_EncodeISOArray: 719 case Op_EncodeISOArray:
724 case Op_AryEq: { 720 case Op_AryEq: {
778 } 774 }
779 if (bol->as_Bool()->_test._test == BoolTest::ne) 775 if (bol->as_Bool()->_test._test == BoolTest::ne)
780 continue; // not RC 776 continue; // not RC
781 777
782 Node *cmp = bol->in(1); 778 Node *cmp = bol->in(1);
783 if (cmp->is_FlagsProj()) {
784 continue;
785 }
786
787 Node *rc_exp = cmp->in(1); 779 Node *rc_exp = cmp->in(1);
788 Node *limit = cmp->in(2); 780 Node *limit = cmp->in(2);
789 781
790 Node *limit_c = phase->get_ctrl(limit); 782 Node *limit_c = phase->get_ctrl(limit);
791 if( limit_c == phase->C->top() ) 783 if( limit_c == phase->C->top() )