class Functional extends FunctionalValueAnalysis[ConstantPropagationLattice.type]
Interprocedural analysis that uses the worklist solver with reachability and propagation-style. with functional-approach context sensitivity.
- Alphabetic
- By Inheritance
- Functional
- FunctionalValueAnalysis
- FunctionalFunctions
- ContextSensitiveValueAnalysis
- CallContextFunctions
- InterprocValueAnalysisMisc
- ValueAnalysisMisc
- WorklistFixpointPropagationSolver
- WorklistFixpointPropagationFunctions
- WorklistFixpointSolverWithReachability
- WorklistFixpointSolver
- ListSetWorklist
- Worklist
- MapLiftLatticeSolver
- MapLatticeSolver
- LatticeSolver
- ContextSensitiveForwardDependencies
- Dependencies
- FlowSensitiveAnalysis
- Analysis
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new Functional(cfg: InterproceduralProgramCfg)(implicit declData: DeclarationData)
Type Members
-
type
statelatticetype = Lattice
The type for the abstract state lattice.
The type for the abstract state lattice.
- Definition Classes
- CallContextFunctions
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
add(ns: Set[(FunctionalContext, CfgNode)]): Unit
Adds a set of items to the worklist.
Adds a set of items to the worklist.
- Definition Classes
- ListSetWorklist → Worklist
-
def
add(n: (FunctionalContext, CfgNode)): Unit
Adds an item to the worklist.
Adds an item to the worklist.
- Definition Classes
- ListSetWorklist → Worklist
-
def
analyze(): Element
The analyze function.
The analyze function.
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
val
cfg: InterproceduralProgramCfg
- Definition Classes
- ContextSensitiveValueAnalysis → InterprocValueAnalysisMisc → ValueAnalysisMisc → ContextSensitiveForwardDependencies
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @IntrinsicCandidate()
-
implicit
val
declData: DeclarationData
- Definition Classes
- FunctionalValueAnalysis → ContextSensitiveValueAnalysis → InterprocValueAnalysisMisc → ValueAnalysisMisc
-
val
declaredVars: Set[ADeclaration]
Set of declared variables, used by
statelattice
.Set of declared variables, used by
statelattice
.- Definition Classes
- ValueAnalysisMisc
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
eval(exp: AExpr, env: Element)(implicit declData: DeclarationData): lattices.ConstantPropagationLattice.Element
Default implementation of eval.
Default implementation of eval.
- Definition Classes
- ValueAnalysisMisc
-
def
evalArgs(formalParams: Seq[ADeclaration], actualParams: Seq[AExpr], state: Element): Element
Abstract evaluation of function arguments.
Abstract evaluation of function arguments.
- Definition Classes
- InterprocValueAnalysisMisc
-
val
first: Set[(FunctionalContext, CfgNode)]
Worklist start locations.
Worklist start locations.
-
def
funsub(n: (FunctionalContext, CfgNode), x: Element): Element
The constraint function for individual elements in the map domain.
The constraint function for individual elements in the map domain. First computes the join of the incoming elements and then applies the transfer function.
- n
the current location in the map domain
- x
the current lattice element for all locations
- returns
the output sublattice element
- Definition Classes
- MapLatticeSolver
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
def
indep(n: (FunctionalContext, CfgNode)): Set[(FunctionalContext, CfgNode)]
(Not implemented as it is not used by any existing analysis.)
(Not implemented as it is not used by any existing analysis.)
- n
an element from the worklist
- returns
the elements that the given element depends on
- Definition Classes
- ContextSensitiveForwardDependencies → Dependencies
-
def
init: Lift
The initial lattice element at the start locations is "reachable".
The initial lattice element at the start locations is "reachable".
-
def
initialContext: FunctionalContext
Creates a context as the empty abstract state.
Creates a context as the empty abstract state.
- Definition Classes
- FunctionalFunctions → CallContextFunctions
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
join(n: (FunctionalContext, CfgNode), o: Element): Element
Computes the least upper bound of the incoming elements.
Computes the least upper bound of the incoming elements.
- Definition Classes
- MapLatticeSolver
-
val
lattice: MapLattice[(FunctionalContext, CfgNode), liftedstatelattice.type]
The analysis lattice.
The analysis lattice.
-
val
liftedstatelattice: LiftLattice[statelattice.type]
Lifted state lattice, with new bottom element representing "unreachable".
Lifted state lattice, with new bottom element representing "unreachable".
- Definition Classes
- ContextSensitiveValueAnalysis → InterprocValueAnalysisMisc
-
def
localTransfer(n: CfgNode, s: Element): Element
Transfer function for state lattice elements.
Transfer function for state lattice elements.
- Definition Classes
- ValueAnalysisMisc
-
def
makeCallContext(c: FunctionalContext, n: CfgCallNode, x: Element, f: CfgFunEntryNode): FunctionalContext
Creates a context as the singleton list consisting of the call node (and ignoring the other arguments).
Creates a context as the singleton list consisting of the call node (and ignoring the other arguments).
- c
the caller context
- n
the current call node
- x
the callee entry abstract state
- f
the callee function
- returns
the context for the callee
- Definition Classes
- FunctionalFunctions → CallContextFunctions
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
def
outdep(n: (FunctionalContext, CfgNode)): Set[(FunctionalContext, CfgNode)]
Like InterproceduralForwardDependencies.outdep but returning an empty set for call nodes and function exit nodes, and using the same context as the given pair.
Like InterproceduralForwardDependencies.outdep but returning an empty set for call nodes and function exit nodes, and using the same context as the given pair.
- n
an element from the worklist
- returns
the elements that depend on the given element
- Definition Classes
- ContextSensitiveForwardDependencies → Dependencies
-
def
process(n: (FunctionalContext, CfgNode)): Unit
This method overrides the one from WorklistFixpointSolver.
This method overrides the one from WorklistFixpointSolver. Called by the worklist solver when a node is visited.
- Definition Classes
- WorklistFixpointPropagationSolver → WorklistFixpointSolver → Worklist
-
def
propagate(y: Element, m: (FunctionalContext, CfgNode)): Unit
Propagates lattice element y to node m.
Propagates lattice element y to node m.
- Definition Classes
- WorklistFixpointPropagationFunctions
-
val
returnEdges: HashMap[(FunctionalContext, CfgFunExitNode), Set[(FunctionalContext, CfgAfterCallNode)]] with MultiMap[(FunctionalContext, CfgFunExitNode), (FunctionalContext, CfgAfterCallNode)]
Collect (reverse) call edges, such that we don't have to search through the global lattice element to find the relevant call contexts.
Collect (reverse) call edges, such that we don't have to search through the global lattice element to find the relevant call contexts.
- Definition Classes
- ContextSensitiveValueAnalysis
-
def
run(first: Set[(FunctionalContext, CfgNode)]): Unit
Iterates until there is no more work to do.
Iterates until there is no more work to do.
- first
the initial contents of the worklist
- Definition Classes
- ListSetWorklist → Worklist
-
val
stateAfterNode: Boolean
- Definition Classes
- FlowSensitiveAnalysis
-
val
statelattice: MapLattice[ADeclaration, valuelattice.type]
The lattice of abstract states.
The lattice of abstract states.
- Definition Classes
- ValueAnalysisMisc
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
transfer(n: (FunctionalContext, CfgNode), s: Element): Element
The transfer function.
The transfer function.
- Definition Classes
- MapLiftLatticeSolver → MapLatticeSolver
-
def
transferUnlifted(n: (FunctionalContext, CfgNode), s: Element): Element
Transfer function for state lattice elements.
Transfer function for state lattice elements.
- Definition Classes
- ContextSensitiveValueAnalysis → MapLiftLatticeSolver
-
val
valuelattice: ConstantPropagationLattice.type
The lattice of abstract values.
The lattice of abstract values.
- Definition Classes
- FunctionalValueAnalysis → ValueAnalysisMisc
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
val
x: Element
The current lattice element.
The current lattice element.
- Definition Classes
- WorklistFixpointSolver
Deprecated Value Members
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated
- Deprecated