@Override public void visitArrayLength(SSAArrayLengthInstruction instruction) { if (!doPrimitives) { result = null; } else { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Integer.valueOf(1)))); } }
@Override public void visitArrayLength(SSAArrayLengthInstruction instruction) { if (!doPrimitives) { result = null; } else { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Integer.valueOf(1)))); } }
@Override public void visitComparison(SSAComparisonInstruction instruction) { if (doPrimitives) { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Integer.valueOf(0)))); } }
@Override public void visitComparison(SSAComparisonInstruction instruction) { if (doPrimitives) { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Integer.valueOf(0)))); } }
@Override public void visitInstanceof(SSAInstanceofInstruction instruction) { if (doPrimitives) { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } }
@Override public void visitConversion(SSAConversionInstruction instruction) { if (doPrimitives) { result = new DeclaredTypeOperator(language.getPrimitive(instruction.getToType())); } }
@Override public void visitConversion(SSAConversionInstruction instruction) { if (doPrimitives) { result = new DeclaredTypeOperator(language.getPrimitive(instruction.getToType())); } }
@Override public void visitInstanceof(SSAInstanceofInstruction instruction) { if (doPrimitives) { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } }
@Override public void visitBinaryOp(SSABinaryOpInstruction instruction) { if (doPrimitives) { IBinaryOpInstruction.IOperator op = instruction.getOperator(); if (op == CAstBinaryOp.EQ || op == CAstBinaryOp.NE || op == CAstBinaryOp.LT || op == CAstBinaryOp.GE || op == CAstBinaryOp.GT || op == CAstBinaryOp.LE) { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } else { result = new PrimAndStringOp(); } } }
@Override public TypeAbstraction getConstantPrimitiveType(int valueNumber) { SymbolTable st = ir.getSymbolTable(); if (st.isBooleanConstant(valueNumber)) { return language.getPrimitive(language.getConstantType(Boolean.TRUE)); } else { return super.getConstantPrimitiveType(valueNumber); } }
@Override public TypeAbstraction getConstantPrimitiveType(int valueNumber) { SymbolTable st = ir.getSymbolTable(); if (st.isBooleanConstant(valueNumber)) { return language.getPrimitive(language.getConstantType(Boolean.TRUE)); } else { return super.getConstantPrimitiveType(valueNumber); } }
@Override public void visitBinaryOp(SSABinaryOpInstruction instruction) { if (doPrimitives) { IBinaryOpInstruction.IOperator op = instruction.getOperator(); if (op == CAstBinaryOp.EQ || op == CAstBinaryOp.NE || op == CAstBinaryOp.LT || op == CAstBinaryOp.GE || op == CAstBinaryOp.GT || op == CAstBinaryOp.LE) { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } else { result = new PrimAndStringOp(); } } }
public TypeAbstraction getConstantPrimitiveType(int valueNumber) { SymbolTable st = ir.getSymbolTable(); if (!st.isConstant(valueNumber) || st.isNullConstant(valueNumber)) { return TypeAbstraction.TOP; } else { return language.getPrimitive(language.getConstantType(st.getConstantValue(valueNumber))); } }
public TypeAbstraction getConstantPrimitiveType(int valueNumber) { SymbolTable st = ir.getSymbolTable(); if (!st.isConstant(valueNumber) || st.isNullConstant(valueNumber)) { return TypeAbstraction.TOP; } else { return language.getPrimitive(language.getConstantType(st.getConstantValue(valueNumber))); } }
@Override public IVariable makeVariable(int valueNumber) { SymbolTable st = ir.getSymbolTable(); if (st.isIntegerConstant(valueNumber) && st.isZero(valueNumber)) { return new DalvikTypeVariable(language.getPrimitive(language.getConstantType(Integer.valueOf(0))), true); } else { if (doPrimitives) { if (st.isConstant(valueNumber)) { if (st.isBooleanConstant(valueNumber)) { return new DalvikTypeVariable(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } } } return new DalvikTypeVariable(TypeAbstraction.TOP); } } }
@Override public IVariable makeVariable(int valueNumber) { SymbolTable st = ir.getSymbolTable(); if (st.isIntegerConstant(valueNumber) && st.isZero(valueNumber)) { return new DalvikTypeVariable(language.getPrimitive(language.getConstantType(Integer.valueOf(0))), true); } else { if (doPrimitives) { if (st.isConstant(valueNumber)) { if (st.isBooleanConstant(valueNumber)) { return new DalvikTypeVariable(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } } } return new DalvikTypeVariable(TypeAbstraction.TOP); } } }
@Override public IVariable makeVariable(int valueNumber) { if (doPrimitives) { SymbolTable st = ir.getSymbolTable(); if (st.isConstant(valueNumber)) { if (st.isBooleanConstant(valueNumber)) { return new TypeVariable(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } } } return new TypeVariable(TypeAbstraction.TOP); }
@Override public IVariable makeVariable(int valueNumber) { if (doPrimitives) { SymbolTable st = ir.getSymbolTable(); if (st.isConstant(valueNumber)) { if (st.isBooleanConstant(valueNumber)) { return new TypeVariable(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } } } return new TypeVariable(TypeAbstraction.TOP); }
private DeclaredTypeOperator getPointerTypeOperator(TypeReference type) { if (type.isPrimitiveType()) { return new DeclaredTypeOperator(language.getPrimitive(type)); } else { IClass klass = cha.lookupClass(type); if (klass == null) { // a type that cannot be loaded. // be pessimistic return new DeclaredTypeOperator(BOTTOM); } else { return new DeclaredTypeOperator(new ConeType(klass)); } } }
private DeclaredTypeOperator getPointerTypeOperator(TypeReference type) { if (type.isPrimitiveType()) { return new DeclaredTypeOperator(language.getPrimitive(type)); } else { IClass klass = cha.lookupClass(type); if (klass == null) { // a type that cannot be loaded. // be pessimistic return new DeclaredTypeOperator(BOTTOM); } else { return new DeclaredTypeOperator(new ConeType(klass)); } } }