diff -r 0d51908c9cef -r 24b9c15dc6aa SmallInteger.st --- a/SmallInteger.st Tue Aug 18 18:53:05 2015 +0200 +++ b/SmallInteger.st Thu Aug 20 09:42:41 2015 +0200 @@ -2646,7 +2646,9 @@ %{ /* NOCONTEXT */ #ifdef __SCHTEAM__ - return context._RETURN( self.eqvP( aNumber )); + if (aNumber.isNumber()) { + return context._RETURN( self.eqvP( aNumber )); + } #else if (aNumber == self) { @@ -2823,8 +2825,10 @@ %{ /* NOCONTEXT */ #ifdef __SCHTEAM__ - return context._RETURN( (self.eqvP( aNumber ) == STObject.True) ? STObject.False : STObject.True); - /* NOTREACHED */ + if (aNumber.isNumber()) { + return context._RETURN( (self.eqvP( aNumber ) == STObject.True) ? STObject.False : STObject.True); + /* NOTREACHED */ + } #else if (aNumber == self) { @@ -3928,26 +3932,26 @@ int negative = 0; if (self == __MKSMALLINT(0)) { - RETURN (@global(ZeroString)); + RETURN (@global(ZeroString)); // RETURN (__MKSTRING_L("0", 1)); } myValue = __intVal(self); if (myValue < 0) { - negative = 1; - myValue = -myValue; + negative = 1; + myValue = -myValue; } cp = buffer + sizeof(buffer) - 1; *cp-- = '\0'; for ( ; myValue != 0; cp--) { - *cp = '0' + (myValue % 10); - myValue /= 10; + *cp = '0' + (myValue % 10); + myValue /= 10; } if (negative) { - *cp-- = '-'; + *cp-- = '-'; } newString = __MKSTRING_L(cp+1, (buffer + sizeof(buffer) - 2 - cp)); if (newString != nil) { - RETURN (newString); + RETURN (newString); } #endif /* not __SCHTEAM__ */ %}. @@ -3981,52 +3985,52 @@ java.lang.String __s; switch (__base) { - case 2: - __s = java.lang.Long.toBinaryString(myValue); - break; - - case 8: - __s = java.lang.Long.toOctalString(myValue); - break; - - case 10: - __s = java.lang.Long.toString(myValue); - break; - - case 16: - __s = java.lang.Long.toHexString(myValue); - break; - - default: - { - boolean negative = false; - __s = ""; - - if ((__base > 36) || (__base < 2)) { - throw new SmalltalkError("invalid base: ", base); - } - if (myValue < 0) { - negative = true; - myValue = -myValue; - } - while (myValue != 0) { - int digit; - char ch; - - digit = (int)(myValue % __base); - if (digit <= 9) { - ch = (char)('0' + digit); - } else { - ch = (char)('A' + digit - 10); - } - __s = ch + __s; - myValue = myValue / __base; - } - if (negative) { - __s = "-" + __s; - } - break; - } + case 2: + __s = java.lang.Long.toBinaryString(myValue); + break; + + case 8: + __s = java.lang.Long.toOctalString(myValue); + break; + + case 10: + __s = java.lang.Long.toString(myValue); + break; + + case 16: + __s = java.lang.Long.toHexString(myValue); + break; + + default: + { + boolean negative = false; + __s = ""; + + if ((__base > 36) || (__base < 2)) { + throw new SmalltalkError("invalid base: ", base); + } + if (myValue < 0) { + negative = true; + myValue = -myValue; + } + while (myValue != 0) { + int digit; + char ch; + + digit = (int)(myValue % __base); + if (digit <= 9) { + ch = (char)('0' + digit); + } else { + ch = (char)('A' + digit - 10); + } + __s = ch + __s; + myValue = myValue / __base; + } + if (negative) { + __s = "-" + __s; + } + break; + } } return context._RETURN( new STString( __s )); #else @@ -4034,37 +4038,37 @@ INT __base; if (__isSmallInteger(base)) { - if (self == __MKSMALLINT(0)) { - RETURN (@global(ZeroString)); + if (self == __MKSMALLINT(0)) { + RETURN (@global(ZeroString)); // RETURN (__MKSTRING_L("0", 1)); - } - __base = __intVal(base); - - if ((__base < sizeof(digits)) && (__base > 1)) { - char buffer[64+3]; /* for 64bit machines, base 2, plus sign, plus 0-byte */ - char *cp; - OBJ newString; - int negative = 0; - INT myValue = __intVal(self); - - if (myValue < 0) { - negative = 1; - myValue = -myValue; - } - cp = buffer + sizeof(buffer) - 1; - *cp-- = '\0'; - for (; myValue != 0; cp--) { - *cp = digits[myValue % __base]; - myValue /= __base; - } - if (negative) { - *cp-- = '-'; - } - newString = __MKSTRING_L(cp+1, (buffer + sizeof(buffer) - 2 - cp)); - if (newString != nil) { - RETURN (newString); - } - } + } + __base = __intVal(base); + + if ((__base < sizeof(digits)) && (__base > 1)) { + char buffer[64+3]; /* for 64bit machines, base 2, plus sign, plus 0-byte */ + char *cp; + OBJ newString; + int negative = 0; + INT myValue = __intVal(self); + + if (myValue < 0) { + negative = 1; + myValue = -myValue; + } + cp = buffer + sizeof(buffer) - 1; + *cp-- = '\0'; + for (; myValue != 0; cp--) { + *cp = digits[myValue % __base]; + myValue /= __base; + } + if (negative) { + *cp-- = '-'; + } + newString = __MKSTRING_L(cp+1, (buffer + sizeof(buffer) - 2 - cp)); + if (newString != nil) { + RETURN (newString); + } + } } #endif /* not __SCHTEAM__ */ %}.