< 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 >