< prev index next >

src/java.base/share/classes/sun/invoke/util/BytecodeDescriptor.java

Print this page

        

*** 88,100 **** int begc = i[0], endc = str.indexOf(';', begc); if (endc < 0) return null; i[0] = endc+1; String name = str.substring(begc, endc).replace('/', '.'); try { ! return (loader == null) ? Class.forName(name, false, null) : loader.loadClass(name); } catch (ClassNotFoundException ex) { throw new TypeNotPresentException(name, ex); } } else if (c == '[') { Class<?> t = parseSig(str, i, end, loader); --- 88,101 ---- int begc = i[0], endc = str.indexOf(';', begc); if (endc < 0) return null; i[0] = endc+1; String name = str.substring(begc, endc).replace('/', '.'); try { ! Class<?> clz = (loader == null) ? Class.forName(name, false, null) : loader.loadClass(name); + return c == 'Q' ? clz.asValueType() : clz.asBoxType(); } catch (ClassNotFoundException ex) { throw new TypeNotPresentException(name, ex); } } else if (c == '[') { Class<?> t = parseSig(str, i, end, loader);
*** 149,164 **** return sb.toString(); } private static void unparseSig(Class<?> t, StringBuilder sb) { char c = Wrapper.forBasicType(t).basicTypeChar(); ! if (c != 'L' && c != 'Q') { sb.append(c); } else if (t == Object.class) { sb.append("Ljava/lang/Object;"); } else { boolean lsemi = (!t.isArray()); if (lsemi) sb.append(c); sb.append(t.getName().replace('.', '/')); if (lsemi) sb.append(';'); } } --- 150,167 ---- return sb.toString(); } private static void unparseSig(Class<?> t, StringBuilder sb) { char c = Wrapper.forBasicType(t).basicTypeChar(); ! if (c != 'L') { sb.append(c); } else if (t == Object.class) { sb.append("Ljava/lang/Object;"); } else { boolean lsemi = (!t.isArray()); + if (t == t.asValueType()) + c = 'Q'; if (lsemi) sb.append(c); sb.append(t.getName().replace('.', '/')); if (lsemi) sb.append(';'); } }
< prev index next >