break; case Opcode.AASTORE : TypeData.ArrayElement.aastore(stackTypes[stackTop - 3], stackTypes[stackTop - 1], classPool);
int s = --stackTop - 1; TypeData data = stackTypes[s]; stackTypes[s] = TypeData.ArrayElement.make(data); break; } case Opcode.BALOAD :
int s = --stackTop - 1; TypeData data = stackTypes[s]; stackTypes[s] = TypeData.ArrayElement.make(data); break; } case Opcode.BALOAD :
break; case Opcode.AASTORE : TypeData.ArrayElement.aastore(stackTypes[stackTop - 3], stackTypes[stackTop - 1], classPool);
throw new BadBytecode("bad AALOAD"); else stackTypes[s] = new TypeData.ArrayElement(data);
int s = --stackTop - 1; TypeData data = stackTypes[s]; stackTypes[s] = TypeData.ArrayElement.make(data); break; } case Opcode.BALOAD :
int s = --stackTop - 1; TypeData data = stackTypes[s]; stackTypes[s] = TypeData.ArrayElement.make(data); break; } case Opcode.BALOAD :
throw new BadBytecode("bad AALOAD"); else stackTypes[s] = new TypeData.ArrayElement(data);
case Opcode.AASTORE : TypeData.setType(stackTypes[stackTop - 1], TypeData.ArrayElement.getElementType(stackTypes[stackTop - 3].getName()), classPool); stackTop -= 3;
case Opcode.AASTORE : TypeData.setType(stackTypes[stackTop - 1], TypeData.ArrayElement.getElementType(stackTypes[stackTop - 3].getName()), classPool); stackTop -= 3;
break; case Opcode.AASTORE : TypeData.ArrayElement.aastore(stackTypes[stackTop - 3], stackTypes[stackTop - 1], classPool);
break; case Opcode.AASTORE : TypeData.ArrayElement.aastore(stackTypes[stackTop - 3], stackTypes[stackTop - 1], classPool);
public static void aastore(TypeData array, TypeData value, ClassPool cp) throws BadBytecode { if (array instanceof AbsTypeVar) if (!value.isNullType()) ((AbsTypeVar)array).merge(ArrayType.make(value)); if (value instanceof AbsTypeVar) if (array instanceof AbsTypeVar) ArrayElement.make(array); // should call value.setType() later. else if (array instanceof ClassName) { if (!array.isNullType()) { String type = ArrayElement.typeName(array.getName()); value.setType(type, cp); } } else throw new BadBytecode("bad AASTORE: " + array); }
public static void aastore(TypeData array, TypeData value, ClassPool cp) throws BadBytecode { if (array instanceof AbsTypeVar) if (!value.isNullType()) ((AbsTypeVar)array).merge(ArrayType.make(value)); if (value instanceof AbsTypeVar) if (array instanceof AbsTypeVar) ArrayElement.make(array); // should call value.setType() later. else if (array instanceof ClassName) { if (!array.isNullType()) { String type = ArrayElement.typeName(array.getName()); value.setType(type, cp); } } else throw new BadBytecode("bad AASTORE: " + array); }
public static void aastore(TypeData array, TypeData value, ClassPool cp) throws BadBytecode { if (array instanceof AbsTypeVar) if (!value.isNullType()) ((AbsTypeVar)array).merge(ArrayType.make(value)); if (value instanceof AbsTypeVar) if (array instanceof AbsTypeVar) ArrayElement.make(array); // should call value.setType() later. else if (array instanceof ClassName) { if (!array.isNullType()) { String type = ArrayElement.typeName(array.getName()); value.setType(type, cp); } } else throw new BadBytecode("bad AASTORE: " + array); }
public String getName() { return typeName(array.getName()); }
public String getName() { return typeName(array.getName()); }
public TypeData copy() { return new ArrayElement(array); }
protected void setType(String typeName, ClassPool cp) throws BadBytecode { super.setType(typeName, cp); array.setType(getArrayType(typeName), cp); }
public String getName() { return typeName(array.getName()); }