Index: working_classlib/modules/luni/src/main/java/java/io/ObjectInputStream.java =================================================================== --- working_classlib/modules/luni/src/main/java/java/io/ObjectInputStream.java (revision 612717) +++ working_classlib/modules/luni/src/main/java/java/io/ObjectInputStream.java (working copy) @@ -2390,16 +2389,21 @@ */ protected Class resolveClass(ObjectStreamClass osClass) throws IOException, ClassNotFoundException { - String className = osClass.getName(); + + if (osClass.classDescEx == null ) { + String className = osClass.getName(); // if it is primitive class, for example, long.class - Class cls = PRIMITIVE_CLASSES.get(className); - if (null == cls) { - // not primitive class - // Use the first non-null ClassLoader on the stack. If null, use the - // system class loader - return Class.forName(className, true, callerClassLoader); - } - return cls; + Class cls = PRIMITIVE_CLASSES.get(className); + if (null == cls) { + // not primitive class + // Use the first non-null ClassLoader on the stack. If null, use the + // system class loader + return (osClass.classDescEx = Class.forName(className, true, callerClassLoader)); + } + return (osClass.classDescEx = cls); + } else { + return osClass.classDescEx; + } } /** Index: working_classlib/modules/luni/src/main/java/java/io/ObjectStreamClass.java =================================================================== --- working_classlib/modules/luni/src/main/java/java/io/ObjectStreamClass.java (revision 612717) +++ working_classlib/modules/luni/src/main/java/java/io/ObjectStreamClass.java (working copy) @@ -185,6 +185,8 @@ * Libraries, Second Edition, Vol. I". */ + public transient Class classDescEx; + /** * Constructs a new instance of this class. */ @@ -204,7 +206,7 @@ * a boolean indicating if SUID should be computed or not. * @return the computer class descriptor */ - private static ObjectStreamClass createClassDesc(Class cl, + public static ObjectStreamClass createClassDesc(Class cl, boolean computeSUID) { ObjectStreamClass result = new ObjectStreamClass(); @@ -1098,7 +1103,7 @@ * a String, the new fully qualified name of the class the * receiver represents */ - void setName(String newName) { + public void setName(String newName) { className = newName; }