On Monday 21 April 2008 12:09:16 Christian Thalinger wrote: > On Mon, 2008-04-21 at 11:43 +0100, Andrew Haley wrote: > > Why use a short and not an int? > > > > for (int i=MIN_VALUE; i <= MAX_VALUE; i++) > > > > would be more idiomatic and faster on many targets. > > Same as I suggested. This would also apply to: > > --- java/lang/Character.java 19 Dec 2006 01:14:23 -0000 1.48 > +++ java/lang/Character.java 14 Apr 2008 13:54:25 -0000 > @@ -2055,6 +2055,11 @@ > // this constant controls how much we actually cache. > private static final int MAX_CACHE = 127; > private static Character[] charCache = new Character[MAX_CACHE + 1]; > + static > + { > + for (char i=0; i <= MAX_CACHE; i++) > + charCache[i] = new Character(i); > + } > > --- java/lang/Short.java 10 Dec 2006 20:25:44 -0000 1.20 > +++ java/lang/Short.java 14 Apr 2008 13:54:25 -0000 > @@ -90,6 +90,11 @@ > private static final int MIN_CACHE = -128; > private static final int MAX_CACHE = 127; > private static Short[] shortCache = new Short[MAX_CACHE - MIN_CACHE + > 1]; + static > + { > + for (short i=MIN_CACHE; i <= MAX_CACHE; i++) > + shortCache[i - MIN_CACHE] = new Short(i); > + } > > - twisti
Indeed you did suggest it, but didn't give me a good reason to do it... ;) Anyway, here's the patch to change to an int. I haven't changed the other two, because it also means introducing a cast in the loop body. If it's still worthwhile, given this, I'll add that too. 2008-04-21 Andrew John Hughes <[EMAIL PROTECTED]> * java/lang/Byte.java: Use int instead of short as a loop counter for efficiency. -- Andrew :) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8
Index: java/lang/Byte.java =================================================================== RCS file: /sources/classpath/classpath/java/lang/Byte.java,v retrieving revision 1.28 diff -u -r1.28 Byte.java --- java/lang/Byte.java 21 Apr 2008 10:37:47 -0000 1.28 +++ java/lang/Byte.java 21 Apr 2008 14:25:02 -0000 @@ -90,7 +90,7 @@ private static Byte[] byteCache = new Byte[MAX_VALUE - MIN_VALUE + 1]; static { - for (short i=MIN_VALUE; i <= MAX_VALUE; i++) + for (int i=MIN_VALUE; i <= MAX_VALUE; i++) byteCache[i - MIN_VALUE] = new Byte((byte) i); }
signature.asc
Description: This is a digitally signed message part.