soot.jimple.toolkits.annotation.nullcheck
Class BranchedRefVarsAnalysis
java.lang.Object
soot.toolkits.scalar.AbstractFlowAnalysis
soot.toolkits.scalar.BranchedFlowAnalysis
soot.toolkits.scalar.ForwardBranchedFlowAnalysis
soot.jimple.toolkits.annotation.nullcheck.BranchedRefVarsAnalysis
- public class BranchedRefVarsAnalysis
- extends ForwardBranchedFlowAnalysis
Method Summary |
int |
anyRefInfo(Value r,
FlowSet f)
|
protected void |
copy(Object source,
Object dest)
Creates a copy of the source flow object in dest . |
protected Object |
entryInitialFlow()
Returns the initial flow value for entry/exit graph nodes. |
protected void |
flowThrough(Object inValue,
Unit stmt,
List outFallValue,
List outBranchValues)
Given the merge of the in sets,
compute the fallOut and branchOuts
set for s . |
EquivalentValue |
getEquivalentValue(Value v)
|
RefIntPair |
getKRefIntPair(EquivalentValue r,
int v)
|
protected boolean |
isAlwaysNonNull(Value ro)
|
protected void |
merge(Object in1,
Object in2,
Object out)
Compute the merge of the in1 and in2 sets, putting the result into out . |
protected Object |
newInitialFlow()
Returns the flow object corresponding to the initial values for
each graph node. |
protected int |
refInfo(EquivalentValue r,
FlowSet fs)
|
protected int |
refInfo(Value r,
FlowSet fs)
|
boolean |
treatTrapHandlersAsEntries()
Determines whether entryInitialFlow()
is applied to trap handlers. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
kBottom
public static final int kBottom
- See Also:
- Constant Field Values
kNull
public static final int kNull
- See Also:
- Constant Field Values
kNonNull
public static final int kNonNull
- See Also:
- Constant Field Values
kTop
public static final int kTop
- See Also:
- Constant Field Values
emptySet
protected FlowSet emptySet
fullSet
protected FlowSet fullSet
unitToGenerateSet
protected Map unitToGenerateSet
unitToPreserveSet
protected Map unitToPreserveSet
unitToAnalyzedChecksSet
protected Map unitToAnalyzedChecksSet
unitToArrayRefChecksSet
protected Map unitToArrayRefChecksSet
unitToInstanceFieldRefChecksSet
protected Map unitToInstanceFieldRefChecksSet
unitToInstanceInvokeExprChecksSet
protected Map unitToInstanceInvokeExprChecksSet
unitToLengthExprChecksSet
protected Map unitToLengthExprChecksSet
refTypeLocals
protected List refTypeLocals
refTypeInstFields
protected List refTypeInstFields
refTypeInstFieldBases
protected List refTypeInstFieldBases
refTypeStaticFields
protected List refTypeStaticFields
refTypeValues
protected List refTypeValues
tempFlowSet
protected FlowSet tempFlowSet
BranchedRefVarsAnalysis
public BranchedRefVarsAnalysis(UnitGraph g)
- end of utility methods
getEquivalentValue
public EquivalentValue getEquivalentValue(Value v)
getKRefIntPair
public RefIntPair getKRefIntPair(EquivalentValue r,
int v)
isAlwaysNonNull
protected boolean isAlwaysNonNull(Value ro)
refInfo
protected final int refInfo(EquivalentValue r,
FlowSet fs)
refInfo
protected final int refInfo(Value r,
FlowSet fs)
anyRefInfo
public int anyRefInfo(Value r,
FlowSet f)
flowThrough
protected void flowThrough(Object inValue,
Unit stmt,
List outFallValue,
List outBranchValues)
- Description copied from class:
BranchedFlowAnalysis
- Given the merge of the
in
sets,
compute the fallOut
and branchOuts
set for s
.
- Specified by:
flowThrough
in class BranchedFlowAnalysis
merge
protected void merge(Object in1,
Object in2,
Object out)
- Description copied from class:
AbstractFlowAnalysis
- Compute the merge of the
in1
and in2
sets, putting the result into out
.
The behavior of this function depends on the implementation ( it may be necessary to check whether
in1
and in2
are equal or aliased ).
Used by the doAnalysis method.
- Specified by:
merge
in class AbstractFlowAnalysis
copy
protected void copy(Object source,
Object dest)
- Description copied from class:
AbstractFlowAnalysis
- Creates a copy of the
source
flow object in dest
.
- Specified by:
copy
in class AbstractFlowAnalysis
newInitialFlow
protected Object newInitialFlow()
- Description copied from class:
AbstractFlowAnalysis
- Returns the flow object corresponding to the initial values for
each graph node.
- Specified by:
newInitialFlow
in class AbstractFlowAnalysis
entryInitialFlow
protected Object entryInitialFlow()
- Description copied from class:
AbstractFlowAnalysis
- Returns the initial flow value for entry/exit graph nodes.
- Specified by:
entryInitialFlow
in class AbstractFlowAnalysis
treatTrapHandlersAsEntries
public boolean treatTrapHandlersAsEntries()
- Description copied from class:
AbstractFlowAnalysis
- Determines whether
entryInitialFlow()
is applied to trap handlers.
- Overrides:
treatTrapHandlersAsEntries
in class AbstractFlowAnalysis