< prev index next >
src/java.base/share/classes/sun/invoke/util/BytecodeDescriptor.java
Print this page
rev 13121 : 8143926: ObjectStreamField constructor eagerly load ObjectStreamClass
Reviewed-by: TBD
*** 111,121 ****
unparseSig(type, sb);
return sb.toString();
}
public static String unparse(MethodType type) {
! return unparseMethod(type.returnType(), type.parameterList());
}
public static String unparse(Object type) {
if (type instanceof Class<?>)
return unparse((Class<?>) type);
--- 111,121 ----
unparseSig(type, sb);
return sb.toString();
}
public static String unparse(MethodType type) {
! return unparseMethod(type.returnType(), type.parameterArray());
}
public static String unparse(Object type) {
if (type instanceof Class<?>)
return unparse((Class<?>) type);
*** 132,149 ****
sb.append(')');
unparseSig(rtype, sb);
return sb.toString();
}
private static void unparseSig(Class<?> t, StringBuilder sb) {
! char c = Wrapper.forBasicType(t).basicTypeChar();
! if (c != 'L') {
! sb.append(c);
} else {
boolean lsemi = (!t.isArray());
if (lsemi) sb.append('L');
sb.append(t.getName().replace('.', '/'));
if (lsemi) sb.append(';');
}
}
}
--- 132,180 ----
sb.append(')');
unparseSig(rtype, sb);
return sb.toString();
}
+ public static String unparseMethod(Class<?> rtype, Class<?>[] ptypes) {
+ StringBuilder sb = new StringBuilder();
+ sb.append('(');
+ for (Class<?> pt : ptypes)
+ unparseSig(pt, sb);
+ sb.append(')');
+ unparseSig(rtype, sb);
+ return sb.toString();
+ }
+
private static void unparseSig(Class<?> t, StringBuilder sb) {
! if (t.isPrimitive()) {
! sb.append(getPrimitiveTypeChar(t));
} else {
boolean lsemi = (!t.isArray());
if (lsemi) sb.append('L');
sb.append(t.getName().replace('.', '/'));
if (lsemi) sb.append(';');
}
}
+ private static char getPrimitiveTypeChar(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();
+ }
}
< prev index next >