Fix overflow detection on SmallInt

* For instance minInt + (-1) or minInt - 1 are not detected.
* Code is taken from JRuby, and `& SIGN_BIT` is replaced by the `>>`.