Package boomerang
Class WeightedBoomerang<W extends wpds.impl.Weight>
- java.lang.Object
-
- boomerang.WeightedBoomerang<W>
-
- Direct Known Subclasses:
Boomerang,PathTrackingBoomerang,WholeProgramBoomerang
public abstract class WeightedBoomerang<W extends wpds.impl.Weight> extends Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classWeightedBoomerang.FieldWritePOI
-
Field Summary
Fields Modifier and Type Field Description protected ObservableControlFlowGraphcfgprotected ObservableICFG<Statement,Method>icfgprotected BoomerangOptionsoptions
-
Constructor Summary
Constructors Constructor Description WeightedBoomerang(CallGraph cg, DataFlowScope scope)WeightedBoomerang(CallGraph cg, DataFlowScope scope, BoomerangOptions options)
-
Method Summary
-
-
-
Field Detail
-
icfg
protected ObservableICFG<Statement,Method> icfg
-
cfg
protected ObservableControlFlowGraph cfg
-
options
protected final BoomerangOptions options
-
-
Constructor Detail
-
WeightedBoomerang
public WeightedBoomerang(CallGraph cg, DataFlowScope scope, BoomerangOptions options)
-
WeightedBoomerang
public WeightedBoomerang(CallGraph cg, DataFlowScope scope)
-
-
Method Detail
-
isFirstStatementOfEntryPoint
protected boolean isFirstStatementOfEntryPoint(Statement stmt)
-
handleMapsBackward
protected void handleMapsBackward(sync.pds.solver.nodes.Node<ControlFlowGraph.Edge,Val> node)
-
handleMapsForward
protected void handleMapsForward(ForwardBoomerangSolver<W> solver, sync.pds.solver.nodes.Node<ControlFlowGraph.Edge,Val> node)
-
checkTimeout
public void checkTimeout()
-
addVisitedMethod
protected void addVisitedMethod(Method method)
-
isAllocationNode
protected Optional<AllocVal> isAllocationNode(ControlFlowGraph.Edge s, Val fact)
-
createForwardSolver
protected ForwardBoomerangSolver<W> createForwardSolver(ForwardQuery sourceQuery)
-
preventCallRuleAdd
public boolean preventCallRuleAdd(ForwardQuery sourceQuery, wpds.impl.Rule<ControlFlowGraph.Edge,sync.pds.solver.nodes.INode<Val>,W> rule)
-
createArrayFieldStore
protected WeightedBoomerang.FieldWritePOI createArrayFieldStore(ControlFlowGraph.Edge s)
-
createFieldStore
protected WeightedBoomerang.FieldWritePOI createFieldStore(ControlFlowGraph.Edge cfgEdge)
-
forwardHandleFieldWrite
protected void forwardHandleFieldWrite(sync.pds.solver.nodes.Node<ControlFlowGraph.Edge,Val> node, WeightedBoomerang.FieldWritePOI fieldWritePoi, ForwardQuery sourceQuery)
-
unregisterAllListeners
public void unregisterAllListeners()
-
getBackwardSolvers
public DefaultValueMap<BackwardQuery,BackwardBoomerangSolver<W>> getBackwardSolvers()
-
getQueryGraph
public QueryGraph<W> getQueryGraph()
-
solve
public ForwardBoomerangResults<W> solve(ForwardQuery query)
-
solve
public BackwardBoomerangResults<W> solve(BackwardQuery query)
-
solve
public BackwardBoomerangResults<W> solve(BackwardQuery query, boolean timing)
-
solveUnderScope
public BackwardBoomerangResults<W> solveUnderScope(BackwardQuery query, sync.pds.solver.nodes.Node<ControlFlowGraph.Edge,Val> triggeringNode, Query parentQuery)
-
solveUnderScope
public ForwardBoomerangResults<W> solveUnderScope(ForwardQuery query, sync.pds.solver.nodes.Node<ControlFlowGraph.Edge,Val> triggeringNode, Query parentQuery)
-
debugOutput
public void debugOutput()
-
backwardSolve
protected void backwardSolve(BackwardQuery query)
-
activateAllPois
protected void activateAllPois(boomerang.WeightedBoomerang.SolverPair pair, sync.pds.solver.nodes.INode<sync.pds.solver.nodes.Node<ControlFlowGraph.Edge,Val>> start)
-
registerActivationListener
public void registerActivationListener(boomerang.WeightedBoomerang.SolverPair solverPair, ExecuteImportFieldStmtPOI<W> exec)
-
icfg
public ObservableICFG<Statement,Method> icfg()
-
cfg
public ObservableControlFlowGraph cfg()
-
getForwardFieldWeights
protected abstract sync.pds.solver.WeightFunctions<ControlFlowGraph.Edge,Val,Field,W> getForwardFieldWeights()
-
getBackwardFieldWeights
protected abstract sync.pds.solver.WeightFunctions<ControlFlowGraph.Edge,Val,Field,W> getBackwardFieldWeights()
-
getBackwardCallWeights
protected abstract sync.pds.solver.WeightFunctions<ControlFlowGraph.Edge,Val,ControlFlowGraph.Edge,W> getBackwardCallWeights()
-
getForwardCallWeights
protected abstract sync.pds.solver.WeightFunctions<ControlFlowGraph.Edge,Val,ControlFlowGraph.Edge,W> getForwardCallWeights(ForwardQuery sourceQuery)
-
getSolvers
public DefaultValueMap<ForwardQuery,ForwardBoomerangSolver<W>> getSolvers()
-
getStats
public IBoomerangStats<W> getStats()
-
onCreateSubSolver
public void onCreateSubSolver(Query key, AbstractBoomerangSolver<W> solver)
-
registerSolverCreationListener
public void registerSolverCreationListener(SolverCreationListener<W> l)
-
getResults
public com.google.common.collect.Table<ControlFlowGraph.Edge,Val,W> getResults(ForwardQuery seed)
-
getOptions
public BoomerangOptions getOptions()
-
getCallGraph
public CallGraph getCallGraph()
-
printCallAutomatonFlow
public void printCallAutomatonFlow(AbstractBoomerangSolver<W> solver)
-
printAllForwardCallAutomatonFlow
public void printAllForwardCallAutomatonFlow()
-
printAllBackwardCallAutomatonFlow
public void printAllBackwardCallAutomatonFlow()
-
printAllAutomata
public void printAllAutomata()
-
printAutomata
public void printAutomata(Query q)
-
-