< prev index next >
src/java.base/share/classes/java/io/ObjectStreamClass.java
Print this page
rev 13121 : 8143926: ObjectStreamField constructor eagerly load ObjectStreamClass
Reviewed-by: TBD
*** 47,56 ****
--- 47,57 ----
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import jdk.internal.misc.Unsafe;
+ import sun.invoke.util.BytecodeDescriptor;
import sun.reflect.CallerSensitive;
import sun.reflect.Reflection;
import sun.reflect.ReflectionFactory;
import sun.reflect.misc.ReflectUtil;
*** 1523,1598 ****
name2 = name2.substring(name2.lastIndexOf('.') + 1);
return name1.equals(name2);
}
/**
- * Returns JVM type signature for given primitive.
- */
- private static String getPrimitiveSignature(Class<?> cl) {
- if (cl == Integer.TYPE)
- return "I";
- else if (cl == Byte.TYPE)
- return "B";
- else if (cl == Long.TYPE)
- return "J";
- else if (cl == Float.TYPE)
- return "F";
- else if (cl == Double.TYPE)
- return "D";
- else if (cl == Short.TYPE)
- return "S";
- else if (cl == Character.TYPE)
- return "C";
- else if (cl == Boolean.TYPE)
- return "Z";
- else if (cl == Void.TYPE)
- return "V";
- else
- throw new InternalError();
- }
-
- /**
- * Returns JVM type signature for given class.
- */
- static String getClassSignature(Class<?> cl) {
- if (cl.isPrimitive())
- return getPrimitiveSignature(cl);
- else
- return appendClassSignature(new StringBuilder(), cl).toString();
- }
-
- private static StringBuilder appendClassSignature(StringBuilder sbuf, Class<?> cl) {
- while (cl.isArray()) {
- sbuf.append('[');
- cl = cl.getComponentType();
- }
-
- if (cl.isPrimitive())
- sbuf.append(getPrimitiveSignature(cl));
- else
- sbuf.append('L').append(cl.getName().replace('.', '/')).append(';');
-
- return sbuf;
- }
-
- /**
- * Returns JVM type signature for given list of parameters and return type.
- */
- private static String getMethodSignature(Class<?>[] paramTypes,
- Class<?> retType)
- {
- StringBuilder sbuf = new StringBuilder();
- sbuf.append('(');
- for (int i = 0; i < paramTypes.length; i++) {
- appendClassSignature(sbuf, paramTypes[i]);
- }
- sbuf.append(')');
- appendClassSignature(sbuf, retType);
- return sbuf.toString();
- }
-
- /**
* Convenience method for throwing an exception that is either a
* RuntimeException, Error, or of some unexpected type (in which case it is
* wrapped inside an IOException).
*/
private static void throwMiscException(Throwable th) throws IOException {
--- 1524,1533 ----
*** 1896,1920 ****
public final String signature;
public MemberSignature(Field field) {
member = field;
name = field.getName();
! signature = getClassSignature(field.getType());
}
public MemberSignature(Constructor<?> cons) {
member = cons;
name = cons.getName();
! signature = getMethodSignature(
! cons.getParameterTypes(), Void.TYPE);
}
public MemberSignature(Method meth) {
member = meth;
name = meth.getName();
! signature = getMethodSignature(
! meth.getParameterTypes(), meth.getReturnType());
}
}
/**
* Class for setting and retrieving serializable field values in batch.
--- 1831,1855 ----
public final String signature;
public MemberSignature(Field field) {
member = field;
name = field.getName();
! signature = BytecodeDescriptor.unparse(field.getType());
}
public MemberSignature(Constructor<?> cons) {
member = cons;
name = cons.getName();
! signature = BytecodeDescriptor.unparseMethod(
! Void.TYPE, cons.getParameterTypes());
}
public MemberSignature(Method meth) {
member = meth;
name = meth.getName();
! signature = BytecodeDescriptor.unparseMethod(
! meth.getReturnType(), meth.getParameterTypes());
}
}
/**
* Class for setting and retrieving serializable field values in batch.
< prev index next >