111112113114115116117
public String getName() { return name; } protected void setType(String s, ClassPool cp) throws BadBytecode { throw new BadBytecode("conflict: " + name + " and " + s); }
277278279280281282283284
} else return false; } catch (NotFoundException e) { throw new BadBytecode("cannot find " + e.getMessage()); } }
412413414415416417418419
return name.substring(2, name.length() - 1).replace('/', '.'); else if (c == '[') return name.substring(1); } throw new BadBytecode("bad array type for AALOAD: " + name); }
139140141142143144145
protected void visitRET(int pos, byte[] code) throws BadBytecode { throwBadBytecode(pos, "ret"); } private void throwBadBytecode(int pos, String name) throws BadBytecode { throw new BadBytecode(name + " at " + pos); }
247248249250251252253254255256257
break; case Opcode.AALOAD : { int s = --stackTop - 1; TypeData data = stackTypes[s]; if (data == null || !data.isObjectType()) throw new BadBytecode("bad AALOAD"); else stackTypes[s] = new TypeData.ArrayElement(data); break; } case Opcode.BALOAD :
149150151152153154155
return "(Ljava/lang/Object;I)S"; case LALOAD: return "(Ljava/lang/Object;I)J"; } throw new BadBytecode(opcode); }
174175176177178179180
return "(Ljava/lang/Object;IS)V"; case LASTORE: return "(Ljava/lang/Object;IJ)V"; } throw new BadBytecode(opcode); }
124125126127128129130
236237238239240241242243244245246
stackTypes[s] = OBJECT; Object data = stackData[s]; if (data != null && data instanceof String) stackData[s] = getDerefType((String)data); else throw new BadBytecode("bad AALOAD"); break; } case Opcode.BALOAD : case Opcode.CALOAD : case Opcode.SALOAD :
301302303304305306307
else return type2; } } throw new BadBytecode("bad array type for AALOAD: " + type); }