public class PropagationSystem extends DefaultFixedPointSolver<PointsToSetVariable>
AbstractFixedPointSolver.Statement| Modifier and Type | Field and Description |
|---|---|
protected CallGraph |
cg
Governing call graph;
|
protected MutableMapping<InstanceKey> |
instanceKeys
bijection from InstanceKey <=>Integer
|
protected PointsToMap |
pointsToMap
object that tracks points-to sets
|
DEFAULT_PERIODIC_MAINTENANCE_INTERVAL, DEFAULT_VERBOSE_INTERVAL, verbose, workListCHANGED, CHANGED_AND_FIXED, CHANGED_MASK, FIXED_MASK, NOT_CHANGED, NOT_CHANGED_AND_FIXED, SIDE_EFFECT_MASK| Constructor and Description |
|---|
PropagationSystem(CallGraph cg,
PointerKeyFactory pointerKeyFactory,
InstanceKeyFactory instanceKeyFactory) |
addAllStatementsToWorkList, addToWorkList, changedVariable, emptyWorkList, getMaxEvalBetweenTopo, getMinSizeForTopSort, getNumberOfEvaluations, getStatements, getTopologicalGrowthFactor, incNumberOfEvaluations, initForFirstSolve, isChanged, isFixed, isSideEffect, lineBreak, newStatement, newStatement, newStatement, newStatement, newStatement, orderStatements, removeStatement, setMaxEvalBetweenTopo, setMinEquationsForTopSort, setTopologicalGrowthFactor, solve, toStringprotected final PointsToMap pointsToMap
protected final MutableMapping<InstanceKey> instanceKeys
protected final CallGraph cg
public PropagationSystem(CallGraph cg, PointerKeyFactory pointerKeyFactory, InstanceKeyFactory instanceKeyFactory)
public PointerAnalysis<InstanceKey> makePointerAnalysis(PropagationCallGraphBuilder builder)
protected void registerFixedSet(PointsToSetVariable p, UnarySideEffect s)
protected void updateSideEffects(PointsToSetVariable p, PointsToSetVariable rep)
public IntSet getInstanceKeysForClass(IClass klass)
IllegalArgumentException - if klass is nullpublic InstanceKey getInstanceKey(int i)
public int getInstanceIndex(InstanceKey ik)
protected void initializeVariables()
AbstractFixedPointSolverinitializeVariables in class AbstractFixedPointSolver<PointsToSetVariable>public void recordImplicitPointsToSet(PointerKey key)
public PointsToSetVariable findOrCreatePointsToSet(PointerKey key)
key - public int findOrCreateIndexForInstanceKey(InstanceKey key)
public boolean newConstraint(PointerKey lhs, UnaryOperator<PointsToSetVariable> op, PointerKey rhs)
public boolean newConstraint(PointerKey lhs, AbstractOperator<PointsToSetVariable> op, PointerKey rhs)
public boolean newConstraint(PointerKey lhs, AbstractOperator<PointsToSetVariable> op, PointerKey rhs1, PointerKey rhs2)
public boolean newFieldWrite(PointerKey lhs, UnaryOperator<PointsToSetVariable> op, PointerKey rhs, PointerKey container)
public boolean newFieldRead(PointerKey lhs, UnaryOperator<PointsToSetVariable> op, PointerKey rhs, PointerKey container)
public boolean newConstraint(PointerKey lhs, InstanceKey value)
public void newSideEffect(UnaryOperator<PointsToSetVariable> op, PointerKey arg0)
public void newSideEffect(AbstractOperator<PointsToSetVariable> op, PointerKey[] arg0)
public void newSideEffect(AbstractOperator<PointsToSetVariable> op, PointerKey arg0, PointerKey arg1)
protected void initializeWorkList()
AbstractFixedPointSolverinitializeWorkList in class AbstractFixedPointSolver<PointsToSetVariable>public PointerAnalysis<InstanceKey> extractPointerAnalysis(PropagationCallGraphBuilder builder)
public void performVerboseAction()
VerboseActionperformVerboseAction in interface VerboseActionperformVerboseAction in class AbstractFixedPointSolver<PointsToSetVariable>public IFixedPointSystem<PointsToSetVariable> getFixedPointSystem()
getFixedPointSystem in interface IFixedPointSolver<PointsToSetVariable>getFixedPointSystem in class DefaultFixedPointSolver<PointsToSetVariable>IFixedPointSolverpublic Iterator<PointerKey> iteratePointerKeys()
public int getNumberOfPointerKeys()
public Iterator<AbstractStatement> getStatementsThatUse(PointsToSetVariable v)
public Iterator<AbstractStatement> getStatementsThatDef(PointsToSetVariable v)
public NumberedGraph<PointsToSetVariable> getAssignmentGraph()
public Graph<PointsToSetVariable> getFilterAsssignmentGraph()
public Graph<PointsToSetVariable> getFlowGraphIncludingImplicitConstraints()
public void revertToPreTransitive()
public Iterator getTransitiveRoots()
public boolean isTransitiveRoot(PointerKey key)
protected void periodicMaintenance()
AbstractFixedPointSolverperiodicMaintenance in class AbstractFixedPointSolver<PointsToSetVariable>public int getVerboseInterval()
AbstractFixedPointSolvergetVerboseInterval in class AbstractFixedPointSolver<PointsToSetVariable>public void setVerboseInterval(int verboseInterval)
verboseInterval - The verboseInterval to set.public int getPeriodicMaintainInterval()
AbstractFixedPointSolvergetPeriodicMaintainInterval in class AbstractFixedPointSolver<PointsToSetVariable>public void setPeriodicMaintainInterval(int periodicMaintainInteval)
periodicMaintainInteval - public void unify(IntSet s)
s - numbers of points-to-set variablesIllegalArgumentException - if s is nullpublic boolean isUnified(PointerKey result)
public int getNumber(PointerKey p)
protected PointsToSetVariable[] makeStmtRHS(int size)
makeStmtRHS in class AbstractFixedPointSolver<PointsToSetVariable>