Class ForwardTypeQualifierDataflowAnalysis
java.lang.Object
edu.umd.cs.findbugs.ba.BasicAbstractDataflowAnalysis<TypeQualifierValueSet>
edu.umd.cs.findbugs.ba.AbstractDataflowAnalysis<TypeQualifierValueSet>
edu.umd.cs.findbugs.ba.jsr305.TypeQualifierDataflowAnalysis
edu.umd.cs.findbugs.ba.jsr305.ForwardTypeQualifierDataflowAnalysis
- All Implemented Interfaces:
DataflowAnalysis<TypeQualifierValueSet>
Forward type qualifier dataflow analysis.
-
Field Summary
FieldsFields inherited from class TypeQualifierDataflowAnalysis
cfg, cpg, DEBUG_VERBOSE, typeQualifierValue, vnaDataflow, xmethod -
Constructor Summary
ConstructorsConstructorDescriptionForwardTypeQualifierDataflowAnalysis(DepthFirstSearch dfs, XMethod xmethod, CFG cfg, ValueNumberDataflow vnaDataflow, org.apache.bcel.generic.ConstantPoolGen cpg, TypeQualifierValue<?> typeQualifierValue) Constructor. -
Method Summary
Modifier and TypeMethodDescriptiongetBlockOrder(CFG cfg1) Return the BlockOrder specifying the order in which BasicBlocks should be visited in the main dataflow loop.booleanReturns true if the analysis is forwards, false if backwards.protected voidpropagateAcrossPhiNode(TypeQualifierValueSet fact, ValueNumber sourceVN, ValueNumber targetVN) private voidregisterConstantPushSource(Location location) private voidregisterConstantSource(Location location, Object constantValue) private voidregisterFieldLoadSource(Location location) private voidprivate voidregisterLDC2ValueSource(Location location) private voidregisterLDCValueSource(Location location) private voidregisterOtherSource(Location location) private voidprivate voidregisterPushNullSource(Location location) private voidregisterReturnValueSource(Location location) voidThis method must be called before the dataflow analysis is executed.private voidregisterTopOfStackSource(SourceSinkType sourceSinkType, Location location, javax.annotation.meta.When when, boolean interproc, Object constantValue) Methods inherited from class TypeQualifierDataflowAnalysis
copy, createFact, edgeTransfer, getSourceSinkInfoSet, initEntryFact, isFactValid, isIdentifyFunctionForTypeQualifiers, isTop, makeFactTop, meetInto, primitiveType, registerSourceSink, same, transferInstructionMethods inherited from class AbstractDataflowAnalysis
getFactAfterLocation, getFactAtLocation, transferMethods inherited from class BasicAbstractDataflowAnalysis
factToString, finishIteration, getFactOnEdge, getLastUpdateTimestamp, getResultFact, getStartFact, resultFactIterator, setLastUpdateTimestamp, startIteration
-
Field Details
-
dfs
-
-
Constructor Details
-
ForwardTypeQualifierDataflowAnalysis
public ForwardTypeQualifierDataflowAnalysis(DepthFirstSearch dfs, XMethod xmethod, CFG cfg, ValueNumberDataflow vnaDataflow, org.apache.bcel.generic.ConstantPoolGen cpg, TypeQualifierValue<?> typeQualifierValue) Constructor.- Parameters:
dfs- DepthFirstSearch on the analyzed methodxmethod- XMethod for the analyzed methodcfg- CFG of the analyzed methodvnaDataflow- ValueNumberDataflow on the analyzed methodcpg- ConstantPoolGen of the analyzed methodtypeQualifierValue- TypeQualifierValue representing type qualifier the analysis should check
-
-
Method Details
-
getBlockOrder
Description copied from interface:DataflowAnalysisReturn the BlockOrder specifying the order in which BasicBlocks should be visited in the main dataflow loop.- Parameters:
cfg1- the CFG upon which we're performing dataflow analysis
-
isForwards
public boolean isForwards()Description copied from interface:DataflowAnalysisReturns true if the analysis is forwards, false if backwards. -
registerSourceSinkLocations
Description copied from class:TypeQualifierDataflowAnalysisThis method must be called before the dataflow analysis is executed.- Specified by:
registerSourceSinkLocationsin classTypeQualifierDataflowAnalysis- Throws:
DataflowAnalysisException
-
registerInstructionSources
- Throws:
DataflowAnalysisException
-
registerLDCValueSource
- Throws:
DataflowAnalysisException
-
registerLDC2ValueSource
- Throws:
DataflowAnalysisException
-
registerPushNullSource
- Throws:
DataflowAnalysisException
-
registerConstantSource
private void registerConstantSource(Location location, @CheckForNull Object constantValue) throws DataflowAnalysisException - Throws:
DataflowAnalysisException
-
registerOtherSource
- Throws:
DataflowAnalysisException
-
registerConstantPushSource
- Throws:
DataflowAnalysisException
-
registerReturnValueSource
- Throws:
DataflowAnalysisException
-
registerFieldLoadSource
- Throws:
DataflowAnalysisException
-
registerTopOfStackSource
private void registerTopOfStackSource(SourceSinkType sourceSinkType, Location location, javax.annotation.meta.When when, boolean interproc, @CheckForNull Object constantValue) throws DataflowAnalysisException - Throws:
DataflowAnalysisException
-
registerParameterSources
private void registerParameterSources() -
propagateAcrossPhiNode
protected void propagateAcrossPhiNode(TypeQualifierValueSet fact, ValueNumber sourceVN, ValueNumber targetVN) - Specified by:
propagateAcrossPhiNodein classTypeQualifierDataflowAnalysis
-