* Roger Riggs: > to support addExact(), subtractExact(), negateExact(), multiplyExact(), > and toIntExact() for int and long primitive types.
Would it make sense to replace (x ^ r) < 0 && (x ^ y) >= 0 in + public static int addExact(int x, int y) { + int r = x + y; + if ((x ^ r) < 0 && (x ^ y) >= 0) { + throw new ArithmeticException("Addition overflows an int"); + } + return r; + } with (x ^ y ^ r) < 0? For substraction, you could use ((x ^ r) & (x ^ y)) < 0. Will Hotspot be able to optimize away the string construction on the exception path in multiplyExact() if the exception is caught locally? -- Florian Weimer <fwei...@bfk.de> BFK edv-consulting GmbH http://www.bfk.de/ Kriegsstraße 100 tel: +49-721-96201-1 D-76133 Karlsruhe fax: +49-721-96201-99