public boolean isNullType() { if (fixedType == null) return ((TypeData)lowers.get(0)).isNullType(); else return false; }
@Override public boolean isNullType() { if (fixedType == null) return lowers.get(0).isNullType(); return false; }
public void merge(TypeData t) { try { if (!t.isNullType()) element.merge(ArrayElement.make(t)); } catch (BadBytecode e) { // never happens throw new RuntimeException("fatal: " + e); } }
public void merge(TypeData t) { try { if (!t.isNullType()) array.merge(ArrayType.make(t)); } catch (BadBytecode e) { // never happens throw new RuntimeException("fatal: " + e); } }
@Override public void merge(TypeData t) { try { if (!t.isNullType()) element.merge(ArrayElement.make(t)); } catch (BadBytecode e) { // never happens throw new RuntimeException("fatal: " + e); } }
@Override public void merge(TypeData t) { try { if (!t.isNullType()) array.merge(ArrayType.make(t)); } catch (BadBytecode e) { // never happens throw new RuntimeException("fatal: " + e); } }
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); }
if (bt == null && !d.isNullType()) lowersSet.add(d.getName());
static TypeData make(TypeData element) throws BadBytecode { if (element instanceof ArrayElement) return ((ArrayElement)element).arrayType(); else if (element instanceof AbsTypeVar) return new ArrayType((AbsTypeVar)element); else if (element instanceof ClassName) if (!element.isNullType()) return new ClassName(typeName(element.getName())); throw new BadBytecode("bad AASTORE: " + element); }
public static TypeData make(TypeData array) throws BadBytecode { if (array instanceof ArrayType) return ((ArrayType)array).elementType(); else if (array instanceof AbsTypeVar) return new ArrayElement((AbsTypeVar)array); else if (array instanceof ClassName) if (!array.isNullType()) return new ClassName(typeName(array.getName())); throw new BadBytecode("bad AASTORE: " + array); }
if (bt == null && !d.isNullType()) lowersSet.add(d.getName());
public static TypeData make(TypeData array) throws BadBytecode { if (array instanceof ArrayType) return ((ArrayType)array).elementType(); else if (array instanceof AbsTypeVar) return new ArrayElement((AbsTypeVar)array); else if (array instanceof ClassName) if (!array.isNullType()) return new ClassName(typeName(array.getName())); throw new BadBytecode("bad AASTORE: " + array); }
static TypeData make(TypeData element) throws BadBytecode { if (element instanceof ArrayElement) return ((ArrayElement)element).arrayType(); else if (element instanceof AbsTypeVar) return new ArrayType((AbsTypeVar)element); else if (element instanceof ClassName) if (!element.isNullType()) return new ClassName(typeName(element.getName())); throw new BadBytecode("bad AASTORE: " + element); }
private String evalExpectedType2(ArrayList equiv, int n) throws BadBytecode { String origName = null; for (int i = 0; i < n; i++) { TypeData td = (TypeData)equiv.get(i); if (!td.isNullType()) if (origName == null) origName = td.getName(); else if (!origName.equals(td.getName())) return null; } return origName; }
private String evalExpectedType2(ArrayList equiv, int n) throws BadBytecode { String origName = null; for (int i = 0; i < n; i++) { TypeData td = (TypeData)equiv.get(i); if (!td.isNullType()) if (origName == null) origName = td.getName(); else if (!origName.equals(td.getName())) return null; } return origName; }
public void merge(TypeData t) { try { if (!t.isNullType()) element.merge(ArrayElement.make(t)); } catch (BadBytecode e) { // never happens throw new RuntimeException("fatal: " + e); } }
public static TypeData make(TypeData array) throws BadBytecode { if (array instanceof ArrayType) return ((ArrayType)array).elementType(); else if (array instanceof AbsTypeVar) return new ArrayElement((AbsTypeVar)array); else if (array instanceof ClassName) if (!array.isNullType()) return new ClassName(typeName(array.getName())); throw new BadBytecode("bad AASTORE: " + array); }
static TypeData make(TypeData element) throws BadBytecode { if (element instanceof ArrayElement) return ((ArrayElement)element).arrayType(); else if (element instanceof AbsTypeVar) return new ArrayType((AbsTypeVar)element); else if (element instanceof ClassName) if (!element.isNullType()) return new ClassName(typeName(element.getName())); throw new BadBytecode("bad AASTORE: " + element); }
static TypeData make(TypeData element) throws BadBytecode { if (element instanceof ArrayElement) return ((ArrayElement)element).arrayType(); else if (element instanceof AbsTypeVar) return new ArrayType((AbsTypeVar)element); else if (element instanceof ClassName) if (!element.isNullType()) return new ClassName(typeName(element.getName())); throw new BadBytecode("bad AASTORE: " + element); }