Hi! A bug in ObjectStreamClass.calculateClassUID() is fixed (the bug leads to wrong UID value calculated for tagging interfaces).
The other changes are quite minor:
- making some fields private/static;
- optimization of expressions (for speed);
- debugging bytecode elimination (when debugging is off).
ChangeLog entries:
* java/io/DataInputStream.java:
(buf): Make the field private and final.
* java/io/ObjectStreamClass.java:
(methodCache): Likewise.
(uidCache): Likewise.
* java/io/DataInputStream.java:
(convertToInt(byte[])): Optimize the conversion expression.
(convertToLong(byte[])): Likewise.
* java/io/ObjectInputStream.java: Globally replace every "if(dump)"
with "if(DEBUG && dump)" (this eliminates the debug-printing code
when the debugging mode is off).
* java/io/ObjectOutputStream.java: Likewise.
* java/io/ObjectInputStream.java:
(parseContent(byte)): Set ret_val to null and add "break" to
TC_BLOCKDATA[LONG] case.
(parseContent(byte)): Remove the trailing dot character for exception
messages.
(lookupHandle(int)): Likewise.
(readNextBlock(byte)): Likewise.
* java/io/ObjectOutputStream.java:
(writeObject(Object)): Likewise.
(useProtocolVersion(int)): Likewise.
* java/io/ObjectInputStream.java:
(readClassDescriptor()): Optimize sequential storing of 2 objects into
"fieldmapping" array (use single index increment instead of a double
one).
(resolveClass(ObjectStreamClass)): Directly call
VMStackWalker.firstNonNullClassLoader() (since it expects that the
method which calls it is itself directly called from the user code).
(resolveProxyClass(String[])): Likewise.
(currentLoader()): Comment out.
(readFields()): Optimize the code which accesses prim_field_data.
* java/io/ObjectOutputStream.java:
(putFields()): Likewise.
(writeObject(Object)): Comment out debug print of "1".
* java/io/ObjectStreamClass.java:
(toString()): Change the returned string format (to match the RI and
the serialver tool output format).
(setClass(Class, ObjectStreamClass)): Reformat the code (make the
correct identation of "hierarchy" assignment statement).
(noArgs): Make the field private.
(readObjectSignature): Likewise.
(writeObjectSignature): Likewise.
(calculateClassUID(Class)): Adjust ABSTRACT modifier bit according to
whether it is an interface class or not.
(newInstance()): Use noArgs static field.
(classLookup): Make the field final.
(writeMethodArgTypes): Remove unused private field.
Regards.
classpath-ivmai-15.diff
Description: Binary data
