< prev index next >
src/java.base/share/classes/jdk/internal/org/objectweb/asm/Type.java
Print this page
@@ -449,11 +449,11 @@
char car = desc.charAt(c++);
if (car == ')') {
car = desc.charAt(c);
return n << 2
| (car == 'V' ? 0 : (car == 'D' || car == 'J' ? 2 : 1));
- } else if (car == 'L') {
+ } else if (car == 'L' || car == 'Q') {
while (desc.charAt(c++) != ';') {
}
n += 1;
} else if (car == '[') {
while ((car = desc.charAt(c)) == '[') {
@@ -505,18 +505,19 @@
case '[':
len = 1;
while (buf[off + len] == '[') {
++len;
}
- if (buf[off + len] == 'L') {
+ if (buf[off + len] == 'L' || buf[off + len] == 'Q') {
++len;
while (buf[off + len] != ';') {
++len;
}
}
return new Type(ARRAY, buf, off, len + 1);
case 'L':
+ case 'Q':
len = 1;
while (buf[off + len] != ';') {
++len;
}
return new Type(OBJECT, buf, off + 1, len - 1);
@@ -815,12 +816,19 @@
return;
} else if (d.isArray()) {
buf.append('[');
d = d.getComponentType();
} else {
- buf.append('L');
String name = d.getName();
+ // Workarounds nasgen build that depends on ASM but compiled with
+ // the bootstrap JDK. Can't use Class::isValue and Class::asValueType
+ int index = d.getTypeName().lastIndexOf("/val");
+ if (index > 0) {
+ buf.append('Q');
+ } else {
+ buf.append('L');
+ }
int len = name.length();
for (int i = 0; i < len; ++i) {
char car = name.charAt(i);
buf.append(car == '.' ? '/' : car);
}
< prev index next >