soot.jimple.toolkits.annotation.nullcheck
Class BranchedRefVarsAnalysis

java.lang.Object
  extended bysoot.toolkits.scalar.AbstractFlowAnalysis
      extended bysoot.toolkits.scalar.BranchedFlowAnalysis
          extended bysoot.toolkits.scalar.ForwardBranchedFlowAnalysis
              extended bysoot.jimple.toolkits.annotation.nullcheck.BranchedRefVarsAnalysis

public class BranchedRefVarsAnalysis
extends ForwardBranchedFlowAnalysis


Field Summary
protected  FlowSet emptySet
           
protected  FlowSet fullSet
           
static int kBottom
           
static int kNonNull
           
static int kNull
           
static int kTop
           
protected  List refTypeInstFieldBases
           
protected  List refTypeInstFields
           
protected  List refTypeLocals
           
protected  List refTypeStaticFields
           
protected  List refTypeValues
           
protected  FlowSet tempFlowSet
           
protected  Map unitToAnalyzedChecksSet
           
protected  Map unitToArrayRefChecksSet
           
protected  Map unitToGenerateSet
           
protected  Map unitToInstanceFieldRefChecksSet
           
protected  Map unitToInstanceInvokeExprChecksSet
           
protected  Map unitToLengthExprChecksSet
           
protected  Map unitToPreserveSet
           
 
Fields inherited from class soot.toolkits.scalar.BranchedFlowAnalysis
unitToAfterBranchFlow, unitToAfterFallFlow
 
Fields inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
filterUnitToBeforeFlow, graph, unitToBeforeFlow
 
Constructor Summary
BranchedRefVarsAnalysis(UnitGraph g)
          end of utility methods
 
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 soot.toolkits.scalar.ForwardBranchedFlowAnalysis
doAnalysis, isForward
 
Methods inherited from class soot.toolkits.scalar.BranchedFlowAnalysis
getBranchFlowAfter, getFallFlowAfter, getFlowBefore
 
Methods inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
customizeInitialFlowGraph, getFlowBefore, merge
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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
Constructor Detail

BranchedRefVarsAnalysis

public BranchedRefVarsAnalysis(UnitGraph g)
end of utility methods

Method Detail

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