in org.eclipse.sisu.inject/src/org/eclipse/sisu/space/asm/ClassReader.java [1963:2017]
private void getImplicitFrame(final Context frame) {
String desc = frame.desc;
Object[] locals = frame.local;
int local = 0;
if ((frame.access & Opcodes.ACC_STATIC) == 0) {
if ("<init>".equals(frame.name)) {
locals[local++] = Opcodes.UNINITIALIZED_THIS;
} else {
locals[local++] = readClass(header + 2, frame.buffer);
}
}
int i = 1;
loop: while (true) {
int j = i;
switch (desc.charAt(i++)) {
case 'Z':
case 'C':
case 'B':
case 'S':
case 'I':
locals[local++] = Opcodes.INTEGER;
break;
case 'F':
locals[local++] = Opcodes.FLOAT;
break;
case 'J':
locals[local++] = Opcodes.LONG;
break;
case 'D':
locals[local++] = Opcodes.DOUBLE;
break;
case '[':
while (desc.charAt(i) == '[') {
++i;
}
if (desc.charAt(i) == 'L') {
++i;
while (desc.charAt(i) != ';') {
++i;
}
}
locals[local++] = desc.substring(j, ++i);
break;
case 'L':
while (desc.charAt(i) != ';') {
++i;
}
locals[local++] = desc.substring(j + 1, i++);
break;
default:
break loop;
}
}
frame.localCount = local;
}