PatchSet 4951 Date: 2004/07/12 05:21:53 Author: dalibor Branch: HEAD Tag: (none) Log: Resynced with GNU Classpath: Locale
2004-07-11 Dalibor Topic <[EMAIL PROTECTED]> * libraries/javalib/java/util/Locale.java: Resynced with GNU Classpath. 2004-07-05 Bryce McKinlay <[EMAIL PROTECTED]> * java/util/Locale.java (readObject): Intern strings read from object stream. 2004-07-05 Bryce McKinlay <[EMAIL PROTECTED]> * java/util/Locale.java (hashcode): Made transient. (hashCode): No longer synchronized. (equals): Remove comment. (writeObject): No longer synchronized. Implement using writeObject calls instead of tweaking hashCode field. Update doc. (readObject): Implement using readObject calls. Members: ChangeLog:1.2516->1.2517 libraries/javalib/java/util/Locale.java:1.15->1.16 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.2516 kaffe/ChangeLog:1.2517 --- kaffe/ChangeLog:1.2516 Mon Jul 12 05:08:46 2004 +++ kaffe/ChangeLog Mon Jul 12 05:21:53 2004 @@ -14,6 +14,25 @@ 2004-07-11 Dalibor Topic <[EMAIL PROTECTED]> + * libraries/javalib/java/util/Locale.java: + Resynced with GNU Classpath. + + 2004-07-05 Bryce McKinlay <[EMAIL PROTECTED]> + + * java/util/Locale.java (readObject): Intern strings read from object + stream. + + 2004-07-05 Bryce McKinlay <[EMAIL PROTECTED]> + + * java/util/Locale.java (hashcode): Made transient. + (hashCode): No longer synchronized. + (equals): Remove comment. + (writeObject): No longer synchronized. Implement using writeObject + calls instead of tweaking hashCode field. Update doc. + (readObject): Implement using readObject calls. + +2004-07-11 Dalibor Topic <[EMAIL PROTECTED]> + * libraries/javalib/java/text/DateFormat.java: Resynced with GNU Classpath. Index: kaffe/libraries/javalib/java/util/Locale.java diff -u kaffe/libraries/javalib/java/util/Locale.java:1.15 kaffe/libraries/javalib/java/util/Locale.java:1.16 --- kaffe/libraries/javalib/java/util/Locale.java:1.15 Sun Mar 21 17:29:36 2004 +++ kaffe/libraries/javalib/java/util/Locale.java Mon Jul 12 05:21:55 2004 @@ -186,7 +186,7 @@ * * @serial should be -1 in serial streams */ - private int hashcode; + private transient int hashcode; /** * The default locale. Except for during bootstrapping, this should never be @@ -709,10 +709,8 @@ * * @return the hashcode */ - public synchronized int hashCode() + public int hashCode() { - // This method is synchronized because writeObject() might reset - // the hashcode. return hashcode; } @@ -731,10 +729,6 @@ return false; Locale l = (Locale) obj; - // ??? We might also want to add: - // hashCode() == l.hashCode() - // But this is a synchronized method. Is the overhead worth it? - // Measure this to make a decision. return (language == l.language && country == l.country && variant == l.variant); @@ -745,17 +739,19 @@ * * @param output the stream to write to * @throws IOException if the write fails - * @serialData the hashcode should always be written as -1, and recomputed - * when reading it back + * @serialData The first three fields are Strings representing language, + * country, and variant. The fourth field is a placeholder for + * the cached hashcode, but this is always written as -1, and + * recomputed when reading it back. */ - private synchronized void writeObject(ObjectOutputStream output) + private void writeObject(ObjectOutputStream s) throws IOException { - // Synchronized so that hashCode() doesn't get wrong value. - int tmpHashcode = hashcode; - hashcode = -1; - output.defaultWriteObject(); - hashcode = tmpHashcode; + s.writeObject(language); + s.writeObject(country); + s.writeObject(variant); + // Hashcode field is always written as -1. + s.writeInt(-1); } /** @@ -766,10 +762,13 @@ * @throws ClassNotFoundException if reading fails * @serialData the hashCode is always invalid and must be recomputed */ - private void readObject(ObjectInputStream input) + private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { - input.defaultReadObject(); + language = ((String) s.readObject()).intern(); + country = ((String) s.readObject()).intern(); + variant = ((String) s.readObject()).intern(); + // Recompute hashcode. hashcode = language.hashCode() ^ country.hashCode() ^ variant.hashCode(); } } // class Locale _______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe