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