Package com.ibm.wala.dataflow.graph
Class DataflowSolver<T,V extends IVariable<V>>
- java.lang.Object
-
- com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<T>
-
- com.ibm.wala.fixedpoint.impl.DefaultFixedPointSolver<V>
-
- com.ibm.wala.dataflow.graph.DataflowSolver<T,V>
-
- All Implemented Interfaces:
FixedPointConstants,IFixedPointSolver<V>,VerboseAction
- Direct Known Subclasses:
BitVectorSolver,BooleanSolver
public abstract class DataflowSolver<T,V extends IVariable<V>> extends DefaultFixedPointSolver<V>
Iterative solver for a Killdall dataflow framework
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver
AbstractFixedPointSolver.Statement
-
-
Field Summary
-
Fields inherited from class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver
DEFAULT_PERIODIC_MAINTENANCE_INTERVAL, DEFAULT_VERBOSE_INTERVAL, verbose, workList
-
Fields inherited from interface com.ibm.wala.fixpoint.FixedPointConstants
CHANGED, CHANGED_AND_FIXED, CHANGED_MASK, FIXED_MASK, NOT_CHANGED, NOT_CHANGED_AND_FIXED, SIDE_EFFECT_MASK
-
-
Constructor Summary
Constructors Constructor Description DataflowSolver(IKilldallFramework<T,V> problem)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidbuildEquations(boolean toWorkList, boolean eager)@Nullable VgetEdge(Object key)@Nullable VgetEdge(Object src, Object dst)VgetIn(Object node)VgetOut(Object node)IKilldallFramework<T,V>getProblem()protected voidinitializeVariables()Initialize all lattice vars in the system.protected voidinitializeWorkList()Initialize the work list for iteration.jprotected abstract VmakeEdgeVariable(T src, T dst)protected abstract VmakeNodeVariable(T n, boolean IN)-
Methods inherited from class com.ibm.wala.fixedpoint.impl.DefaultFixedPointSolver
getFixedPointSystem
-
Methods inherited from class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver
addAllStatementsToWorkList, addToWorkList, changedVariable, emptyWorkList, getMaxEvalBetweenTopo, getMinSizeForTopSort, getNumberOfEvaluations, getPeriodicMaintainInterval, getStatements, getTopologicalGrowthFactor, getVerboseInterval, incNumberOfEvaluations, initForFirstSolve, isChanged, isFixed, isSideEffect, lineBreak, makeStmtRHS, newStatement, newStatement, newStatement, newStatement, newStatement, orderStatements, performVerboseAction, periodicMaintenance, removeStatement, setMaxEvalBetweenTopo, setMinEquationsForTopSort, setTopologicalGrowthFactor, solve, toString
-
-
-
-
Constructor Detail
-
DataflowSolver
public DataflowSolver(IKilldallFramework<T,V> problem)
-
-
Method Detail
-
makeNodeVariable
protected abstract V makeNodeVariable(T n, boolean IN)
- Parameters:
n- a node- Returns:
- a fresh variable to represent the lattice value at the IN or OUT of n
-
initializeVariables
protected void initializeVariables()
Description copied from class:AbstractFixedPointSolverInitialize all lattice vars in the system.- Specified by:
initializeVariablesin classAbstractFixedPointSolver<V extends IVariable<V>>
-
initializeWorkList
protected void initializeWorkList()
Description copied from class:AbstractFixedPointSolverInitialize the work list for iteration.j- Specified by:
initializeWorkListin classAbstractFixedPointSolver<V extends IVariable<V>>
-
buildEquations
protected void buildEquations(boolean toWorkList, boolean eager)
-
getProblem
public IKilldallFramework<T,V> getProblem()
-
-