src/share/vm/opto/subnode.hpp

changeset 5791
c9ccd7b85f20
parent 4617
c59b7900a2bd
child 6198
55fb97c4c58d
     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

mercurial