@Override public PrimitiveType getPrimitive(TypeReference reference) { return PrimitiveType.getPrimitive(reference); }
@Override public TypeAbstraction meet(TypeAbstraction rhs) { if (rhs == TOP) { return this; } else if (rhs == this) { return this; } else if (rhs instanceof PrimitiveType) { // the meet of two primitives is the smaller of the two types. // in particular integer meet boolean == boolean if (size() < ((PrimitiveType) rhs).size()) { return this; } else { return rhs; } } else { return TOP; } }
@Override public PrimitiveType getPrimitive(TypeReference reference) { return PrimitiveType.getPrimitive(reference); }
@Override public TypeAbstraction meet(TypeAbstraction rhs) { if (rhs == TOP) { return this; } else if (rhs == this) { return this; } else if (rhs instanceof PrimitiveType) { // the meet of two primitives is the smaller of the two types. // in particular integer meet boolean == boolean if (size() < ((PrimitiveType) rhs).size()) { return this; } else { return rhs; } } else { return TOP; } }
@Override public void visitJavaInvoke(AstJavaInvokeInstruction instruction) { TypeReference type = instruction.getDeclaredResultType(); if (type.isReferenceType()) { IClass klass = cha.lookupClass(type); if (klass == null) { // a type that cannot be loaded. // be pessimistic result = new DeclaredTypeOperator(BOTTOM); } else { result = new DeclaredTypeOperator(new ConeType(klass)); } } else { if (doPrimitives && type.isPrimitiveType()) { result = new DeclaredTypeOperator(PrimitiveType.getPrimitive(type)); } else { result = null; } } } }
@Override public void visitJavaInvoke(AstJavaInvokeInstruction instruction) { TypeReference type = instruction.getDeclaredResultType(); if (type.isReferenceType()) { IClass klass = cha.lookupClass(type); if (klass == null) { // a type that cannot be loaded. // be pessimistic result = new DeclaredTypeOperator(BOTTOM); } else { result = new DeclaredTypeOperator(new ConeType(klass)); } } else { if (doPrimitives && type.isPrimitiveType()) { result = new DeclaredTypeOperator(PrimitiveType.getPrimitive(type)); } else { result = null; } } } }
a = PrimitiveType.getPrimitive(p[0]); for (i = 1; i < p.length; i++) { a = a.meet(PrimitiveType.getPrimitive(p[i]));
a = PrimitiveType.getPrimitive(p[0]); for (i = 1; i < p.length; i++) { a = a.meet(PrimitiveType.getPrimitive(p[i]));
abstraction = PrimitiveType.getPrimitive(type); } else { abstraction = new ConeType(cls); abstraction = abstraction.meet(PrimitiveType.getPrimitive(type)); } else { abstraction = abstraction.meet(new ConeType(cls));
abstraction = PrimitiveType.getPrimitive(type); } else { abstraction = new ConeType(cls); abstraction = abstraction.meet(PrimitiveType.getPrimitive(type)); } else { abstraction = abstraction.meet(new ConeType(cls));
abstraction = PrimitiveType.getPrimitive(type); } else { abstraction = new ConeType(cls); abstraction = abstraction.meet(PrimitiveType.getPrimitive(type)); } else { abstraction = abstraction.meet(new ConeType(cls));
abstraction = PrimitiveType.getPrimitive(type); } else { abstraction = new ConeType(cls); abstraction = abstraction.meet(PrimitiveType.getPrimitive(type)); } else { abstraction = abstraction.meet(new ConeType(cls));
lhs.setType(PrimitiveType.getPrimitive(elementType)); return CHANGED;
lhs.setType(PrimitiveType.getPrimitive(elementType)); return CHANGED;