public class PropagationSystem extends com.ibm.wala.fixedpoint.impl.DefaultFixedPointSolver<PointsToSetVariable>
| Modifier and Type | Field and Description |
|---|---|
protected CallGraph |
cg
Governing call graph;
|
protected com.ibm.wala.util.intset.MutableMapping<InstanceKey> |
instanceKeys
bijection from InstanceKey <=>Integer
|
protected PointsToMap |
pointsToMap
object that tracks points-to sets
|
| Constructor and Description |
|---|
PropagationSystem(CallGraph cg,
PointerKeyFactory pointerKeyFactory,
InstanceKeyFactory instanceKeyFactory) |
| Modifier and Type | Method and Description |
|---|---|
PointerAnalysis<InstanceKey> |
extractPointerAnalysis(PropagationCallGraphBuilder builder) |
int |
findOrCreateIndexForInstanceKey(InstanceKey key) |
PointsToSetVariable |
findOrCreatePointsToSet(PointerKey key)
If key is unified, returns the representative
|
com.ibm.wala.util.graph.NumberedGraph<PointsToSetVariable> |
getAssignmentGraph() |
com.ibm.wala.util.graph.Graph<PointsToSetVariable> |
getFilterAsssignmentGraph() |
com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable> |
getFixedPointSystem() |
com.ibm.wala.util.graph.Graph<PointsToSetVariable> |
getFlowGraphIncludingImplicitConstraints()
NOTE: do not use this method unless you really know what you are doing.
|
int |
getInstanceIndex(InstanceKey ik) |
InstanceKey |
getInstanceKey(int i) |
com.ibm.wala.util.intset.IntSet |
getInstanceKeysForClass(IClass klass) |
int |
getNumber(PointerKey p) |
int |
getNumberOfPointerKeys()
warning: this is _real_ slow; don't use it anywhere performance critical
|
int |
getPeriodicMaintainInterval() |
Iterator<com.ibm.wala.fixpoint.AbstractStatement> |
getStatementsThatDef(PointsToSetVariable v) |
Iterator<com.ibm.wala.fixpoint.AbstractStatement> |
getStatementsThatUse(PointsToSetVariable v) |
Iterator |
getTransitiveRoots() |
int |
getVerboseInterval() |
protected void |
initializeVariables() |
protected void |
initializeWorkList() |
boolean |
isTransitiveRoot(PointerKey key) |
boolean |
isUnified(PointerKey result) |
Iterator<PointerKey> |
iteratePointerKeys() |
PointerAnalysis<InstanceKey> |
makePointerAnalysis(PropagationCallGraphBuilder builder) |
protected PointsToSetVariable[] |
makeStmtRHS(int size) |
boolean |
newConstraint(PointerKey lhs,
com.ibm.wala.fixpoint.AbstractOperator<PointsToSetVariable> op,
PointerKey rhs) |
boolean |
newConstraint(PointerKey lhs,
com.ibm.wala.fixpoint.AbstractOperator<PointsToSetVariable> op,
PointerKey rhs1,
PointerKey rhs2) |
boolean |
newConstraint(PointerKey lhs,
InstanceKey value) |
boolean |
newConstraint(PointerKey lhs,
com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> op,
PointerKey rhs)
NB: this is idempotent ...
|
boolean |
newFieldRead(PointerKey lhs,
com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> op,
PointerKey rhs,
PointerKey container) |
boolean |
newFieldWrite(PointerKey lhs,
com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> op,
PointerKey rhs,
PointerKey container) |
void |
newSideEffect(com.ibm.wala.fixpoint.AbstractOperator<PointsToSetVariable> op,
PointerKey[] arg0) |
void |
newSideEffect(com.ibm.wala.fixpoint.AbstractOperator<PointsToSetVariable> op,
PointerKey arg0,
PointerKey arg1) |
void |
newSideEffect(com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> op,
PointerKey arg0) |
void |
performVerboseAction() |
protected void |
periodicMaintenance() |
void |
recordImplicitPointsToSet(PointerKey key)
record that a particular points-to-set is represented implicitly.
|
protected void |
registerFixedSet(PointsToSetVariable p,
UnarySideEffect s) |
void |
revertToPreTransitive() |
void |
setPeriodicMaintainInterval(int periodicMaintainInteval) |
void |
setVerboseInterval(int verboseInterval) |
void |
unify(com.ibm.wala.util.intset.IntSet s)
Unify the points-to-sets for the variables identified by the set s
|
protected void |
updateSideEffects(PointsToSetVariable p,
PointsToSetVariable rep) |
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 com.ibm.wala.util.intset.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 com.ibm.wala.util.intset.IntSet getInstanceKeysForClass(IClass klass)
IllegalArgumentException - if klass is nullpublic InstanceKey getInstanceKey(int i)
public int getInstanceIndex(InstanceKey ik)
protected void initializeVariables()
initializeVariables in class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<PointsToSetVariable>public void recordImplicitPointsToSet(PointerKey key)
public PointsToSetVariable findOrCreatePointsToSet(PointerKey key)
key - public int findOrCreateIndexForInstanceKey(InstanceKey key)
public boolean newConstraint(PointerKey lhs, com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> op, PointerKey rhs)
public boolean newConstraint(PointerKey lhs, com.ibm.wala.fixpoint.AbstractOperator<PointsToSetVariable> op, PointerKey rhs)
public boolean newConstraint(PointerKey lhs, com.ibm.wala.fixpoint.AbstractOperator<PointsToSetVariable> op, PointerKey rhs1, PointerKey rhs2)
public boolean newFieldWrite(PointerKey lhs, com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> op, PointerKey rhs, PointerKey container)
public boolean newFieldRead(PointerKey lhs, com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> op, PointerKey rhs, PointerKey container)
public boolean newConstraint(PointerKey lhs, InstanceKey value)
public void newSideEffect(com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> op, PointerKey arg0)
public void newSideEffect(com.ibm.wala.fixpoint.AbstractOperator<PointsToSetVariable> op, PointerKey[] arg0)
public void newSideEffect(com.ibm.wala.fixpoint.AbstractOperator<PointsToSetVariable> op, PointerKey arg0, PointerKey arg1)
protected void initializeWorkList()
initializeWorkList in class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<PointsToSetVariable>public PointerAnalysis<InstanceKey> extractPointerAnalysis(PropagationCallGraphBuilder builder)
public void performVerboseAction()
performVerboseAction in interface com.ibm.wala.util.debug.VerboseActionperformVerboseAction in class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<PointsToSetVariable>public com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable> getFixedPointSystem()
getFixedPointSystem in interface com.ibm.wala.fixpoint.IFixedPointSolver<PointsToSetVariable>getFixedPointSystem in class com.ibm.wala.fixedpoint.impl.DefaultFixedPointSolver<PointsToSetVariable>public Iterator<PointerKey> iteratePointerKeys()
public int getNumberOfPointerKeys()
public Iterator<com.ibm.wala.fixpoint.AbstractStatement> getStatementsThatUse(PointsToSetVariable v)
public Iterator<com.ibm.wala.fixpoint.AbstractStatement> getStatementsThatDef(PointsToSetVariable v)
public com.ibm.wala.util.graph.NumberedGraph<PointsToSetVariable> getAssignmentGraph()
public com.ibm.wala.util.graph.Graph<PointsToSetVariable> getFilterAsssignmentGraph()
public com.ibm.wala.util.graph.Graph<PointsToSetVariable> getFlowGraphIncludingImplicitConstraints()
public void revertToPreTransitive()
public Iterator getTransitiveRoots()
public boolean isTransitiveRoot(PointerKey key)
protected void periodicMaintenance()
periodicMaintenance in class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<PointsToSetVariable>public int getVerboseInterval()
getVerboseInterval in class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<PointsToSetVariable>public void setVerboseInterval(int verboseInterval)
verboseInterval - The verboseInterval to set.public int getPeriodicMaintainInterval()
getPeriodicMaintainInterval in class com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<PointsToSetVariable>public void setPeriodicMaintainInterval(int periodicMaintainInteval)
periodicMaintainInteval - public void unify(com.ibm.wala.util.intset.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 com.ibm.wala.fixedpoint.impl.AbstractFixedPointSolver<PointsToSetVariable>Copyright © 2015. All rights reserved.