DataflowAnalysis<Fact>BackwardTypeQualifierDataflowAnalysis, ForwardTypeQualifierDataflowAnalysispublic abstract class TypeQualifierDataflowAnalysis extends AbstractDataflowAnalysis<TypeQualifierValueSet>
| Modifier and Type | Field | Description |
|---|---|---|
protected CFG |
cfg |
|
protected org.apache.bcel.generic.ConstantPoolGen |
cpg |
|
protected TypeQualifierValue<?> |
typeQualifierValue |
|
protected ValueNumberDataflow |
vnaDataflow |
|
protected XMethod |
xmethod |
| Constructor | Description |
|---|---|
TypeQualifierDataflowAnalysis(XMethod xmethod,
CFG cfg,
ValueNumberDataflow vnaDataflow,
org.apache.bcel.generic.ConstantPoolGen cpg,
TypeQualifierValue<?> typeQualifierValue) |
Constructor.
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
copy(TypeQualifierValueSet source,
TypeQualifierValueSet dest) |
Copy dataflow facts.
|
TypeQualifierValueSet |
createFact() |
Create empty (uninitialized) dataflow facts for one program point.
|
void |
edgeTransfer(Edge edge,
TypeQualifierValueSet fact) |
Edge transfer function.
|
java.util.Set<SourceSinkInfo> |
getSourceSinkInfoSet(Location location) |
Get the set of SourceSinkInfo objects representing sources/sinks at a
given Location.
|
void |
initEntryFact(TypeQualifierValueSet result) |
Initialize the "entry" fact for the graph.
|
boolean |
isFactValid(TypeQualifierValueSet fact) |
Determine whether the given fact is valid (neither top nor
bottom).
|
boolean |
isTop(TypeQualifierValueSet fact) |
Is the given fact the top value.
|
void |
makeFactTop(TypeQualifierValueSet fact) |
Make given fact the top value.
|
void |
meetInto(TypeQualifierValueSet fact,
Edge edge,
TypeQualifierValueSet result) |
Meet a dataflow fact associated with an incoming edge into another fact.
|
protected abstract void |
propagateAcrossPhiNode(TypeQualifierValueSet fact,
ValueNumber sourceVN,
ValueNumber targetVN) |
|
protected void |
registerSourceSink(SourceSinkInfo sourceSinkInfo) |
|
abstract void |
registerSourceSinkLocations() |
This method must be called before the dataflow analysis is executed.
|
boolean |
same(TypeQualifierValueSet fact1,
TypeQualifierValueSet fact2) |
Are given dataflow facts the same?
|
void |
transferInstruction(org.apache.bcel.generic.InstructionHandle handle,
BasicBlock basicBlock,
TypeQualifierValueSet fact) |
Transfer function for a single instruction.
|
getFactAfterLocation, getFactAtLocation, transferfactToString, finishIteration, getFactOnEdge, getLastUpdateTimestamp, getResultFact, getStartFact, resultFactIterator, setLastUpdateTimestamp, startIterationgetBlockOrder, isForwardsprotected final XMethod xmethod
protected final CFG cfg
protected final ValueNumberDataflow vnaDataflow
protected final TypeQualifierValue<?> typeQualifierValue
protected final org.apache.bcel.generic.ConstantPoolGen cpg
public TypeQualifierDataflowAnalysis(XMethod xmethod, CFG cfg, ValueNumberDataflow vnaDataflow, org.apache.bcel.generic.ConstantPoolGen cpg, TypeQualifierValue<?> typeQualifierValue)
xmethod - XMethod object containing information about the method being
analyzedcfg - the control-flow graph (CFG) of the method being analyzedvnaDataflow - ValueNumberDataflow for the methodcpg - the constant pool being built uptypeQualifierValue - the TypeQualifierValue we want the dataflow analysis to checkpublic void initEntryFact(TypeQualifierValueSet result) throws DataflowAnalysisException
DataflowAnalysisDataflowAnalysisExceptionpublic boolean isFactValid(TypeQualifierValueSet fact)
AbstractDataflowAnalysisisFactValid in class AbstractDataflowAnalysis<TypeQualifierValueSet>public void copy(TypeQualifierValueSet source, TypeQualifierValueSet dest)
DataflowAnalysispublic TypeQualifierValueSet createFact()
DataflowAnalysispublic boolean isTop(TypeQualifierValueSet fact)
DataflowAnalysispublic void makeFactTop(TypeQualifierValueSet fact)
DataflowAnalysispublic void meetInto(TypeQualifierValueSet fact, Edge edge, TypeQualifierValueSet result) throws DataflowAnalysisException
DataflowAnalysisfact - the predecessor fact (incoming edge)edge - the edge from the predecessorresult - the result factDataflowAnalysisExceptionpublic boolean same(TypeQualifierValueSet fact1, TypeQualifierValueSet fact2)
DataflowAnalysispublic void edgeTransfer(Edge edge, TypeQualifierValueSet fact) throws DataflowAnalysisException
DataflowAnalysisA do-nothing implementation is legal, and appropriate for analyses where branches are not significant.
edgeTransfer in interface DataflowAnalysis<Fact>edgeTransfer in class BasicAbstractDataflowAnalysis<TypeQualifierValueSet>edge - the Edgefact - a dataflow factDataflowAnalysisExceptionprotected abstract void propagateAcrossPhiNode(TypeQualifierValueSet fact, ValueNumber sourceVN, ValueNumber targetVN)
public abstract void registerSourceSinkLocations()
throws DataflowAnalysisException
DataflowAnalysisExceptionprotected void registerSourceSink(SourceSinkInfo sourceSinkInfo)
public java.util.Set<SourceSinkInfo> getSourceSinkInfoSet(Location location)
location - a Locationpublic void transferInstruction(org.apache.bcel.generic.InstructionHandle handle,
BasicBlock basicBlock,
TypeQualifierValueSet fact)
throws DataflowAnalysisException
AbstractDataflowAnalysistransferInstruction in class AbstractDataflowAnalysis<TypeQualifierValueSet>handle - the instructionbasicBlock - the BasicBlock containing the instruction; needed to
disambiguate instructions in inlined JSR subroutinesfact - which should be modified based on the instructionDataflowAnalysisExceptionFindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.