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


Field Summary
protected  FlowSet emptySet
           
protected  FlowSet fullSet
           
protected  int kBottom
           
protected  int kNonNull
           
protected  int kNull
           
protected  int kTop
           
protected  java.util.List refTypeInstFieldBases
           
protected  java.util.List refTypeInstFields
           
protected  java.util.List refTypeLocals
           
protected  java.util.List refTypeStaticFields
           
protected  java.util.List refTypeValues
           
protected  FlowSet tempFlowSet
           
protected  java.util.Map unitToAnalyzedChecksSet
           
protected  java.util.Map unitToArrayRefChecksSet
           
protected  java.util.Map unitToGenerateSet
           
protected  java.util.Map unitToInstanceFieldRefChecksSet
           
protected  java.util.Map unitToInstanceInvokeExprChecksSet
           
protected  java.util.Map unitToLengthExprChecksSet
           
protected  java.util.Map unitToPreserveSet
           
 
Fields inherited from class soot.toolkits.scalar.BranchedFlowAnalysis
unitToAfterBranchFlow, unitToAfterFallFlow
 
Fields inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
graph, unitToBeforeFlow
 
Constructor Summary
BranchedRefVarsAnalysis(UnitGraph g)
          end of utility methods
 
Method Summary
protected  int anyRefInfo(Value r, FlowSet f)
           
protected  void copy(java.lang.Object source, java.lang.Object dest)
          Creates a copy of the source flow object in dest.
protected  java.lang.Object entryInitialFlow()
          Returns the initial flow value for entry/exit graph nodes.
protected  void flowThrough(java.lang.Object inValue, Unit stmt, java.util.List outFallValue, java.util.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  void merge(java.lang.Object in1, java.lang.Object in2, java.lang.Object out)
          Compute the merge of the in1 and in2 sets, putting the result into out.
protected  java.lang.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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

kBottom

protected final int kBottom

kNull

protected final int kNull

kNonNull

protected final int kNonNull

kTop

protected final int kTop

emptySet

protected FlowSet emptySet

fullSet

protected FlowSet fullSet

unitToGenerateSet

protected java.util.Map unitToGenerateSet

unitToPreserveSet

protected java.util.Map unitToPreserveSet

unitToAnalyzedChecksSet

protected java.util.Map unitToAnalyzedChecksSet

unitToArrayRefChecksSet

protected java.util.Map unitToArrayRefChecksSet

unitToInstanceFieldRefChecksSet

protected java.util.Map unitToInstanceFieldRefChecksSet

unitToInstanceInvokeExprChecksSet

protected java.util.Map unitToInstanceInvokeExprChecksSet

unitToLengthExprChecksSet

protected java.util.Map unitToLengthExprChecksSet

refTypeLocals

protected java.util.List refTypeLocals

refTypeInstFields

protected java.util.List refTypeInstFields

refTypeInstFieldBases

protected java.util.List refTypeInstFieldBases

refTypeStaticFields

protected java.util.List refTypeStaticFields

refTypeValues

protected java.util.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)

refInfo

protected final int refInfo(EquivalentValue r,
                            FlowSet fs)

refInfo

protected final int refInfo(Value r,
                            FlowSet fs)

anyRefInfo

protected final int anyRefInfo(Value r,
                               FlowSet f)

flowThrough

protected void flowThrough(java.lang.Object inValue,
                           Unit stmt,
                           java.util.List outFallValue,
                           java.util.List outBranchValues)
Description copied from class: BranchedFlowAnalysis
Given the merge of the in sets, compute the fallOut and branchOuts set for s.
Overrides:
flowThrough in class BranchedFlowAnalysis

merge

protected void merge(java.lang.Object in1,
                     java.lang.Object in2,
                     java.lang.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.
Overrides:
merge in class AbstractFlowAnalysis

copy

protected void copy(java.lang.Object source,
                    java.lang.Object dest)
Description copied from class: AbstractFlowAnalysis
Creates a copy of the source flow object in dest.
Overrides:
copy in class AbstractFlowAnalysis

newInitialFlow

protected java.lang.Object newInitialFlow()
Description copied from class: AbstractFlowAnalysis
Returns the flow object corresponding to the initial values for each graph node.
Overrides:
newInitialFlow in class AbstractFlowAnalysis

entryInitialFlow

protected java.lang.Object entryInitialFlow()
Description copied from class: AbstractFlowAnalysis
Returns the initial flow value for entry/exit graph nodes.
Overrides:
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