1.1 --- a/src/share/vm/opto/subnode.hpp Thu Sep 26 12:07:53 2013 -0700 1.2 +++ b/src/share/vm/opto/subnode.hpp Fri Sep 27 08:39:19 2013 +0200 1.3 @@ -263,16 +263,16 @@ 1.4 // We pick the values as 3 bits; the low order 2 bits we compare against the 1.5 // condition codes, the high bit flips the sense of the result. 1.6 struct BoolTest VALUE_OBJ_CLASS_SPEC { 1.7 - enum mask { eq = 0, ne = 4, le = 5, ge = 7, lt = 3, gt = 1, illegal = 8 }; 1.8 + enum mask { eq = 0, ne = 4, le = 5, ge = 7, lt = 3, gt = 1, overflow = 2, no_overflow = 6, illegal = 8 }; 1.9 mask _test; 1.10 BoolTest( mask btm ) : _test(btm) {} 1.11 const Type *cc2logical( const Type *CC ) const; 1.12 // Commute the test. I use a small table lookup. The table is created as 1.13 // a simple char array where each element is the ASCII version of a 'mask' 1.14 // enum from above. 1.15 - mask commute( ) const { return mask("038147858"[_test]-'0'); } 1.16 + mask commute( ) const { return mask("032147658"[_test]-'0'); } 1.17 mask negate( ) const { return mask(_test^4); } 1.18 - bool is_canonical( ) const { return (_test == BoolTest::ne || _test == BoolTest::lt || _test == BoolTest::le); } 1.19 + bool is_canonical( ) const { return (_test == BoolTest::ne || _test == BoolTest::lt || _test == BoolTest::le || _test == BoolTest::overflow); } 1.20 #ifndef PRODUCT 1.21 void dump_on(outputStream *st) const; 1.22 #endif