Package proguard.analysis.cpa.bam
Class CpaWithBamOperators<CfaNodeT extends CfaNode<CfaEdgeT,SignatureT>,CfaEdgeT extends CfaEdge<CfaNodeT>,SignatureT extends Signature>
- java.lang.Object
-
- proguard.analysis.cpa.defaults.SimpleCpa
-
- proguard.analysis.cpa.bam.CpaWithBamOperators<CfaNodeT,CfaEdgeT,SignatureT>
-
- All Implemented Interfaces:
ConfigurableProgramAnalysis
public class CpaWithBamOperators<CfaNodeT extends CfaNode<CfaEdgeT,SignatureT>,CfaEdgeT extends CfaEdge<CfaNodeT>,SignatureT extends Signature> extends SimpleCpa
A domain dependent analysis that can be wrapped with aBamCpa
to be extended inter-procedurally.Compared to a standard
ConfigurableProgramAnalysis
, this is extended with three operators:- The reduce operator discards from the entry abstract state of a procedure the unnecessary information (e.g. local variables of the caller).
- The expand operator restores the removed information.
- The rebuild operator avoids collision of program identifiers while returning from a procedure call (e.g. renaming variables).
-
-
Constructor Summary
Constructors Constructor Description CpaWithBamOperators(AbstractDomain abstractDomain, ProgramLocationDependentTransferRelation<CfaNodeT,CfaEdgeT,SignatureT> transferRelation, MergeOperator merge, StopOperator stop, PrecisionAdjustment precisionAdjustment, ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT> reduce, ExpandOperator<CfaNodeT,CfaEdgeT,SignatureT> expand, RebuildOperator rebuild)
Create a CPA with BAM operators from the abstract domain and the operators.CpaWithBamOperators(ConfigurableProgramAnalysis intraproceduralCpa, ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT> reduce, ExpandOperator<CfaNodeT,CfaEdgeT,SignatureT> expand, RebuildOperator rebuild)
Create a CPA with BAM operators from the intra-proceduralConfigurableProgramAnalysis
and the additional BAM operators.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ExpandOperator<CfaNodeT,CfaEdgeT,SignatureT>
getExpandOperator()
Returns theExpandOperator
.RebuildOperator
getRebuildOperator()
Returns theRebuildOperator
.ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT>
getReduceOperator()
Returns theReduceOperator
.-
Methods inherited from class proguard.analysis.cpa.defaults.SimpleCpa
getAbstractDomain, getMergeOperator, getPrecisionAdjustment, getStopOperator, getTransferRelation
-
-
-
-
Constructor Detail
-
CpaWithBamOperators
public CpaWithBamOperators(AbstractDomain abstractDomain, ProgramLocationDependentTransferRelation<CfaNodeT,CfaEdgeT,SignatureT> transferRelation, MergeOperator merge, StopOperator stop, PrecisionAdjustment precisionAdjustment, ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT> reduce, ExpandOperator<CfaNodeT,CfaEdgeT,SignatureT> expand, RebuildOperator rebuild)
Create a CPA with BAM operators from the abstract domain and the operators.- Parameters:
abstractDomain
- a join-semilattice ofAbstractState
s defining the abstraction level of the analysistransferRelation
- a transfer relation specifying how successor states are computedmerge
- a merge operator defining how (and whether) the olderAbstractState
should be updated with the newly discoveredAbstractState
stop
- a stop operator deciding whether the successor state should be added to theReachedSet
based on the content of the latterprecisionAdjustment
- a precision adjustment selecting thePrecision
for the currently processedAbstractState
considering theReachedSet
contentreduce
- a reduce operator discarding from the entry abstract state of procedures the unnecessary informationexpand
- an expand operator restoring the information removed during reductionrebuild
- a rebuild operator avoiding identifiers collision while returning from a procedure call
-
CpaWithBamOperators
public CpaWithBamOperators(ConfigurableProgramAnalysis intraproceduralCpa, ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT> reduce, ExpandOperator<CfaNodeT,CfaEdgeT,SignatureT> expand, RebuildOperator rebuild)
Create a CPA with BAM operators from the intra-proceduralConfigurableProgramAnalysis
and the additional BAM operators.- Parameters:
intraproceduralCpa
- an intra-proceduralConfigurableProgramAnalysis
reduce
- a reduce operator discarding from the entry abstract state of procedures the unnecessary informationexpand
- an expand operator restoring the information removed during reductionrebuild
- a rebuild operator avoiding identifiers collision while returning from a procedure call
-
-
Method Detail
-
getReduceOperator
public ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT> getReduceOperator()
Returns theReduceOperator
.
-
getExpandOperator
public ExpandOperator<CfaNodeT,CfaEdgeT,SignatureT> getExpandOperator()
Returns theExpandOperator
.
-
getRebuildOperator
public RebuildOperator getRebuildOperator()
Returns theRebuildOperator
.
-
-