Class DalvikTypeInference
java.lang.Object
com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<TypeVariable>
com.ibm.wala.fixedpoint.impl.DefaultFixedPointSolver<TypeVariable>
com.ibm.wala.dataflow.ssa.SSAInference<TypeVariable>
com.ibm.wala.analysis.typeInference.TypeInference
com.ibm.wala.dalvik.analysis.typeInference.DalvikTypeInference
- All Implemented Interfaces:
FixedPointConstants, IFixedPointSolver<TypeVariable>, VerboseAction
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassprotected classNested classes/interfaces inherited from class TypeInference
TypeInference.DeclaredTypeOperator, TypeInference.PrimitivePropagateOperator, TypeInference.TypeVarFactoryModifier and TypeClassDescriptionprotected static final classAn operator which initializes a type to a declared type.protected static classclassNested classes/interfaces inherited from class SSAInference
SSAInference.OperatorFactory<T>, SSAInference.VariableFactory<T>Modifier and TypeClassDescriptionstatic interfaceSSAInference.OperatorFactory<T extends IVariable<T>>static interfaceSSAInference.VariableFactory<T extends IVariable<T>>Nested classes/interfaces inherited from class AbstractFixedPointSolver
AbstractFixedPointSolver.Statement -
Field Summary
Fields inherited from class TypeInference
BOTTOM, cha, doPrimitives, ir, languageModifier and TypeFieldDescriptionprotected final TypeAbstractionA cone type for java.lang.Objectprotected final IClassHierarchyThe governing class hierarchyprotected final booleanshould type inference track primitive types?protected final IRThe governing SSA formprotected final LanguageFields inherited from class AbstractFixedPointSolver
DEFAULT_PERIODIC_MAINTENANCE_INTERVAL, DEFAULT_VERBOSE_INTERVAL, verbose, workListModifier and TypeFieldDescriptionstatic final intstatic final intstatic final booleanprotected Worklistworklist for the iterative solverFields inherited from interface FixedPointConstants
CHANGED, CHANGED_AND_FIXED, CHANGED_MASK, FIXED_MASK, NOT_CHANGED, NOT_CHANGED_AND_FIXED, SIDE_EFFECT_MASKModifier and TypeFieldDescriptionstatic final byteA return value which indicates that a lhs has changed, and the statement might need to be evaluated again.static final byteA return value which indicates that lhs has changed, and the statement need not be evaluated again.static final intThe bit-mask which defines the "CHANGED" flagstatic final intThe bit-mask which defines the "FIXED" flagstatic final byteA return value which indicates that lhs has not changed, and the statement might need to be evaluated again.static final byteA return value which indicates that lhs has not changed, and the statement need not be evaluated again.static final intThe bit-mask which defines the "SIDE EFFECT" flag -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidstatic DalvikTypeInferenceprotected TypeVariable[]makeStmtRHS(int size) Methods inherited from class TypeInference
extractAllResults, getConstantPrimitiveType, getConstantType, getIR, getType, initializeVariables, initializeWorkList, isUndefined, solve, solveModifier and TypeMethodDescriptionExtract all results of the type inference analysis.getConstantPrimitiveType(int valueNumber) getConstantType(int valueNumber) getIR()getType(int valueNumber) Return the type computed for a particular value numberprotected voidInitialize all lattice vars in the system.protected voidInitialize the work list for iteration.jbooleanisUndefined(int valueNumber) booleansolve()booleansolve(MonitorUtil.IProgressMonitor monitor) Solve the set of dataflow graph.Methods inherited from class SSAInference
getVariable, init, toStringModifier and TypeMethodDescriptionprotected TypeVariablegetVariable(int valueNumber) protected voidinit(IR ir, SSAInference.VariableFactory<TypeVariable> varFactory, SSAInference.OperatorFactory<TypeVariable> opFactory) initializer for SSA Inference equations.toString()Return a string representation of the systemMethods inherited from class DefaultFixedPointSolver
getFixedPointSystemMethods inherited from class AbstractFixedPointSolver
addAllStatementsToWorkList, addToWorkList, changedVariable, emptyWorkList, getMaxEvalBetweenTopo, getMinSizeForTopSort, getNumberOfEvaluations, getPeriodicMaintainInterval, getStatements, getTopologicalGrowthFactor, getVerboseInterval, incNumberOfEvaluations, initForFirstSolve, isChanged, isFixed, isSideEffect, lineBreak, newStatement, newStatement, newStatement, newStatement, newStatement, orderStatements, performVerboseAction, periodicMaintenance, removeStatement, setMaxEvalBetweenTopo, setMinEquationsForTopSort, setTopologicalGrowthFactorModifier and TypeMethodDescriptionvoidAdd all to the work list.voidAdd a step to the work list.voidCall this method when the contents of a variable changes.booleanintintintprotected intsubclasses should override as desired.Iterator<? extends INodeWithNumber> doubleprotected intsubclasses should override as desired.voidvoidSome setup which occurs only before the first solvestatic booleanisChanged(byte code) static booleanisFixed(byte code) static booleanisSideEffect(byte code) static StringbooleannewStatement(TypeVariable lhs, NullaryOperator<TypeVariable> operator, boolean toWorkList, boolean eager) Add a step with zero operands on the right-hand side.booleannewStatement(TypeVariable lhs, AbstractOperator<TypeVariable> operator, TypeVariable[] rhs, boolean toWorkList, boolean eager) Add a step to the system with an arbitrary number of operands on the right-hand side.booleannewStatement(TypeVariable lhs, AbstractOperator<TypeVariable> operator, TypeVariable op1, TypeVariable op2, boolean toWorkList, boolean eager) Add an equation with two operands on the right-hand side.booleannewStatement(TypeVariable lhs, AbstractOperator<TypeVariable> operator, TypeVariable op1, TypeVariable op2, TypeVariable op3, boolean toWorkList, boolean eager) Add a step with three operands on the right-hand side.booleannewStatement(TypeVariable lhs, UnaryOperator<TypeVariable> operator, TypeVariable rhs, boolean toWorkList, boolean eager) Add a step with one operand on the right-hand side.voidvoidoptional method used for performance debuggingprotected voida method that will be called every N evaluations.voidvoidsetMaxEvalBetweenTopo(int i) voidsetMinEquationsForTopSort(int i) voidsetTopologicalGrowthFactor(double d)
-
Constructor Details
-
DalvikTypeInference
-
-
Method Details
-
makeStmtRHS
- Overrides:
makeStmtRHSin classTypeInference
-
initialize
protected void initialize()- Overrides:
initializein classTypeInference
-
make
-