soot.jimple.spark.pag
Class BDDPAG

java.lang.Object
  extended bysoot.jimple.spark.pag.AbstractPAG
      extended bysoot.jimple.spark.pag.BDDPAG
All Implemented Interfaces:
PointsToAnalysis

public class BDDPAG
extends AbstractPAG

Pointer assignment graph.

Author:
Ondrej Lhotak

Field Summary
 Relation alloc
           
 Domain base
           
 Domain dst
           
 Relation edgeSet
           
 PhysicalDomain fd
           
 Relation fieldPt
           
 Domain fld
           
 PhysicalDomain h1
           
 PhysicalDomain h2
           
 Relation loads
           
 Domain obj
           
 Relation pointsTo
           
 Domain src
           
 Relation stores
           
 PhysicalDomain t1
           
 PhysicalDomain t2
           
 PhysicalDomain v1
           
 PhysicalDomain v2
           
 Domain var
           
 
Fields inherited from class soot.jimple.spark.pag.AbstractPAG
allocInv, edgeQueue, load, loadInv, maxFinishNumber, simple, simpleInv, store, storeInv, typeManager
 
Fields inherited from interface soot.PointsToAnalysis
ARRAY_ELEMENTS_NODE, CAST_NODE, DEFAULT_CLASS_LOADER, DEFAULT_CLASS_LOADER_LOCAL, EXCEPTION_NODE, MAIN_CLASS_NAME_STRING, MAIN_CLASS_NAME_STRING_LOCAL, MAIN_THREAD_GROUP_NODE, MAIN_THREAD_GROUP_NODE_LOCAL, MAIN_THREAD_NODE, MAIN_THREAD_NODE_LOCAL, RETURN_NODE, RETURN_STRING_CONSTANT_NODE, STRING_ARRAY_NODE, STRING_ARRAY_NODE_LOCAL, STRING_NODE, STRING_NODE_LOCAL, THIS_NODE, THROW_NODE
 
Constructor Summary
BDDPAG(soot.options.BDDSparkOptions opts)
           
 
Method Summary
 java.util.Iterator allocInvSourcesIterator()
           
 java.util.Iterator allocSourcesIterator()
           
 boolean doAddAllocEdge(AllocNode from, VarNode to)
           
 boolean doAddLoadEdge(FieldRefNode from, VarNode to)
           
 boolean doAddSimpleEdge(VarNode from, VarNode to)
           
 boolean doAddStoreEdge(VarNode from, FieldRefNode to)
           
 java.util.Iterator loadInvSourcesIterator()
           
 java.util.Iterator loadSourcesIterator()
           
 PointsToSet reachingObjects(Local l)
          Returns the set of objects pointed to by variable l.
 PointsToSet reachingObjects(PointsToSet ptset, SootField f)
          Returns the set of objects pointed to by instance field f of the objects in the PointsToSet s.
 PointsToSet reachingObjects(SootField f)
          Returns the set of objects pointed to by static field f.
 PointsToSet reachingObjectsOfArrayElement(PointsToSet ptset)
          Returns the set of objects pointed to by elements of the arrays in the PointsToSet s.
 java.util.Iterator simpleInvSourcesIterator()
           
 java.util.Iterator simpleSourcesIterator()
           
 java.util.Iterator storeInvSourcesIterator()
           
 java.util.Iterator storeSourcesIterator()
           
 
Methods inherited from class soot.jimple.spark.pag.AbstractPAG
addAllocEdge, addCallTarget, addCallTarget, addDereference, addEdge, addLoadEdge, addSimpleEdge, addStoreEdge, addToMap, allocNodeListener, edgeReader, findAllocDotField, findContextVarNode, findGlobalFieldRefNode, findGlobalVarNode, findLocalFieldRefNode, findLocalVarNode, getAllocDotFieldNodeNumberer, getAllocNodeNumberer, getDereferences, getFieldRefNodeNumberer, getNodeTags, getNumAllocNodes, getOnFlyCallGraph, getOpts, getSetFactory, getTypeManager, getVarNodeNumberer, makeAllocDotField, makeAllocNode, makeClassConstantNode, makeContextVarNode, makeContextVarNode, makeFieldRefNode, makeGlobalFieldRefNode, makeGlobalVarNode, makeLocalFieldRefNode, makeLocalVarNode, makeStringConstantNode, nodeFactory, ofcg, reachingObjects, setOnFlyCallGraph
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

v1

public PhysicalDomain v1

v2

public PhysicalDomain v2

fd

public PhysicalDomain fd

h1

public PhysicalDomain h1

h2

public PhysicalDomain h2

t1

public PhysicalDomain t1

t2

public PhysicalDomain t2

var

public Domain var

src

public Domain src

dst

public Domain dst

base

public Domain base

obj

public Domain obj

fld

public Domain fld

alloc

public final Relation alloc

pointsTo

public final Relation pointsTo

edgeSet

public final Relation edgeSet

loads

public final Relation loads

stores

public final Relation stores

fieldPt

public final Relation fieldPt
Constructor Detail

BDDPAG

public BDDPAG(soot.options.BDDSparkOptions opts)
Method Detail

reachingObjects

public PointsToSet reachingObjects(Local l)
Description copied from interface: PointsToAnalysis
Returns the set of objects pointed to by variable l.


reachingObjects

public PointsToSet reachingObjects(SootField f)
Description copied from interface: PointsToAnalysis
Returns the set of objects pointed to by static field f.


reachingObjects

public PointsToSet reachingObjects(PointsToSet ptset,
                                   SootField f)
Description copied from interface: PointsToAnalysis
Returns the set of objects pointed to by instance field f of the objects in the PointsToSet s.


reachingObjectsOfArrayElement

public PointsToSet reachingObjectsOfArrayElement(PointsToSet ptset)
Description copied from interface: PointsToAnalysis
Returns the set of objects pointed to by elements of the arrays in the PointsToSet s.


simpleSourcesIterator

public java.util.Iterator simpleSourcesIterator()
Specified by:
simpleSourcesIterator in class AbstractPAG

allocSourcesIterator

public java.util.Iterator allocSourcesIterator()
Specified by:
allocSourcesIterator in class AbstractPAG

storeSourcesIterator

public java.util.Iterator storeSourcesIterator()
Specified by:
storeSourcesIterator in class AbstractPAG

loadSourcesIterator

public java.util.Iterator loadSourcesIterator()
Specified by:
loadSourcesIterator in class AbstractPAG

simpleInvSourcesIterator

public java.util.Iterator simpleInvSourcesIterator()
Specified by:
simpleInvSourcesIterator in class AbstractPAG

allocInvSourcesIterator

public java.util.Iterator allocInvSourcesIterator()
Specified by:
allocInvSourcesIterator in class AbstractPAG

storeInvSourcesIterator

public java.util.Iterator storeInvSourcesIterator()
Specified by:
storeInvSourcesIterator in class AbstractPAG

loadInvSourcesIterator

public java.util.Iterator loadInvSourcesIterator()
Specified by:
loadInvSourcesIterator in class AbstractPAG

doAddSimpleEdge

public boolean doAddSimpleEdge(VarNode from,
                               VarNode to)
Specified by:
doAddSimpleEdge in class AbstractPAG

doAddStoreEdge

public boolean doAddStoreEdge(VarNode from,
                              FieldRefNode to)
Specified by:
doAddStoreEdge in class AbstractPAG

doAddLoadEdge

public boolean doAddLoadEdge(FieldRefNode from,
                             VarNode to)
Specified by:
doAddLoadEdge in class AbstractPAG

doAddAllocEdge

public boolean doAddAllocEdge(AllocNode from,
                              VarNode to)
Specified by:
doAddAllocEdge in class AbstractPAG