Package sync.pds.solver
Class SyncPDSSolver<Stmt extends Location,Fact,Field extends Location,W extends Weight>
- java.lang.Object
-
- sync.pds.solver.SyncPDSSolver<Stmt,Fact,Field,W>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceSyncPDSSolver.OnAddedSummaryListener<Stmt,Fact>static classSyncPDSSolver.PDSSystem
-
Field Summary
Fields Modifier and Type Field Description protected WeightedPAutomaton<Stmt,INode<Fact>,W>callAutomatonprotected WeightedPushdownSystem<Stmt,INode<Fact>,W>callingPDSprotected WeightedPAutomaton<Field,INode<Node<Stmt,Fact>>,W>fieldAutomatonprotected WeightedPushdownSystem<Field,INode<Node<Stmt,Fact>>,W>fieldPDSprotected Map<Map.Entry<INode<Fact>,Stmt>,INode<Fact>>generatedCallState
-
Constructor Summary
Constructors Constructor Description SyncPDSSolver(boolean useCallSummaries, NestedWeightedPAutomatons<Stmt,INode<Fact>,W> callSummaries, boolean useFieldSummaries, NestedWeightedPAutomatons<Field,INode<Node<Stmt,Fact>>,W> fieldSummaries, int maxCallDepth, int maxFieldDepth, int maxUnbalancedCallDepth)
-
Method Summary
-
-
-
Field Detail
-
callingPDS
protected final WeightedPushdownSystem<Stmt extends Location,INode<Fact>,W extends Weight> callingPDS
-
fieldPDS
protected final WeightedPushdownSystem<Field extends Location,INode<Node<Stmt extends Location,Fact>>,W extends Weight> fieldPDS
-
fieldAutomaton
protected final WeightedPAutomaton<Field extends Location,INode<Node<Stmt extends Location,Fact>>,W extends Weight> fieldAutomaton
-
callAutomaton
protected final WeightedPAutomaton<Stmt extends Location,INode<Fact>,W extends Weight> callAutomaton
-
-
Method Detail
-
preventFieldTransitionAdd
protected boolean preventFieldTransitionAdd(Transition<Field,INode<Node<Stmt,Fact>>> trans, W weight)
-
preventCallTransitionAdd
protected boolean preventCallTransitionAdd(Transition<Stmt,INode<Fact>> trans, W weight)
-
solve
public void solve(Node<Stmt,Fact> curr, Field field, INode<Node<Stmt,Fact>> fieldTarget, Stmt stmt, INode<Fact> callTarget, W weight)
-
solve
public void solve(Node<Stmt,Fact> curr, Field field, INode<Node<Stmt,Fact>> fieldTarget, Stmt stmt, INode<Fact> callTarget)
-
addApplySummaryListener
public void addApplySummaryListener(SyncPDSSolver.OnAddedSummaryListener l)
-
applyCallSummary
public abstract void applyCallSummary(Stmt callSite, Fact factInCallee, Stmt spInCallee, Stmt exitStmt, Fact returnedFact)
-
processPush
public void processPush(Node<Stmt,Fact> curr, Location location, PushNode<Stmt,Fact,?> succ, SyncPDSSolver.PDSSystem system)
-
getFieldWeights
public abstract WeightFunctions<Stmt,Fact,Field,W> getFieldWeights()
-
getCallWeights
public abstract WeightFunctions<Stmt,Fact,Stmt,W> getCallWeights()
-
registerListener
public void registerListener(SyncPDSUpdateListener<Stmt,Fact> listener)
-
registerListener
public void registerListener(SyncStatePDSUpdateListener<Stmt,Fact> listener)
-
generateFieldState
public INode<Node<Stmt,Fact>> generateFieldState(INode<Node<Stmt,Fact>> d, Field loc)
-
addGeneratedFieldState
public void addGeneratedFieldState(GeneratedState<Node<Stmt,Fact>,Field> state)
-
epsilonField
public abstract Field epsilonField()
-
emptyField
public abstract Field emptyField()
-
epsilonStmt
public abstract Stmt epsilonStmt()
-
fieldWildCard
public abstract Field fieldWildCard()
-
debugOutput
public void debugOutput()
-
-