Mercurial > hg > truffle
comparison src/share/vm/opto/loopTransform.cpp @ 17726:085b304a1cc5
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 | 55fb97c4c58d |
children | 606acabe7b5c |
comparison
equal
deleted
inserted
replaced
17725:b4ce4e9eb97d | 17726:085b304a1cc5 |
---|---|
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() ) |