|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectsoot.jimple.toolkits.thread.mhp.PegGraph
public class PegGraph
Oct. 7, 2003 modify buildPegChain() for building chain without inliner. June 19, 2003 add begin node to peg June 18, 2003 modify the iterator() to be iterator for all nodes of PEG and mainIterator() to be the iterator for main chain. June 12, 2003 add monitor Map, notifyAll Map, waitingNodes Map.
Field Summary | |
---|---|
protected Map<AllocNode,String> |
allocNodeToObj
|
protected Map<AllocNode,PegChain> |
allocNodeToThread
|
protected Map<JPegStmt,Chain> |
joinStmtToThread
|
HashMap |
startToAllocNodes
|
HashMap<JPegStmt,List> |
startToThread
|
protected Map |
threadNameToStart
|
protected Map |
threadNo
|
protected HashMap<Object,List> |
unitToPreds
|
protected HashMap<Object,List> |
unitToSuccs
|
Constructor Summary | |
---|---|
PegGraph(CallGraph callGraph,
Hierarchy hierarchy,
PAG pag,
Set<Object> methodsNeedingInlining,
Set<AllocNode> allocNodes,
List inlineSites,
Map synchObj,
Set<AllocNode> multiRunAllocNodes,
Map allocNodeToObj,
Body unitBody,
SootMethod sm,
boolean addExceptionEdges,
boolean dontAddEdgeFromStmtBeforeAreaOfProtectionToCatchBlock)
Constructs a graph for the units found in the provided Body instance. |
|
PegGraph(CallGraph callGraph,
Hierarchy hierarchy,
PAG pag,
Set methodsNeedingInlining,
Set allocNodes,
List<List> inlineSites,
Map<SootMethod,String> synchObj,
Set multiRunAllocNodes,
Map<AllocNode,String> allocNodeToObj,
Body unitBody,
String threadName,
SootMethod sm,
boolean addExceEdge,
boolean dontAddEdgeFromStmtBeforeAreaOfProtectionToCatchBlock)
Constructs a graph for the units found in the provided Body instance. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected HashMap<Object,List> unitToSuccs
protected HashMap<Object,List> unitToPreds
public HashMap<JPegStmt,List> startToThread
public HashMap startToAllocNodes
protected Map threadNo
protected Map threadNameToStart
protected Map<AllocNode,String> allocNodeToObj
protected Map<AllocNode,PegChain> allocNodeToThread
protected Map<JPegStmt,Chain> joinStmtToThread
Constructor Detail |
---|
public PegGraph(CallGraph callGraph, Hierarchy hierarchy, PAG pag, Set<Object> methodsNeedingInlining, Set<AllocNode> allocNodes, List inlineSites, Map synchObj, Set<AllocNode> multiRunAllocNodes, Map allocNodeToObj, Body unitBody, SootMethod sm, boolean addExceptionEdges, boolean dontAddEdgeFromStmtBeforeAreaOfProtectionToCatchBlock)
Body
- The underlying body of main threadaddExceptionEdges
- If true then the control flow edges associated with
exceptions are added.Hierarchy
- Using class hierarchy analysis to find the run method of started threadPointsToAnalysis
- Using point to analysis (SPARK package) to improve the precision of resultspublic PegGraph(CallGraph callGraph, Hierarchy hierarchy, PAG pag, Set methodsNeedingInlining, Set allocNodes, List<List> inlineSites, Map<SootMethod,String> synchObj, Set multiRunAllocNodes, Map<AllocNode,String> allocNodeToObj, Body unitBody, String threadName, SootMethod sm, boolean addExceEdge, boolean dontAddEdgeFromStmtBeforeAreaOfProtectionToCatchBlock)
body
- The underlying body we want to make a
graph for.addExceptionEdges
- If true then the control flow edges associated with
exceptions are added.dontAddEdgeFromStmtBeforeAreaOfProtectionToCatchBlock
- This was added for Dava.
If true, edges are not added from statement before area of
protection to catch. If false, edges ARE added. For Dava,
it should be true. For flow analyses, it should be false.Hierarchy
- Using class hierarchy analysis to find the run method of started threadPointsToAnalysis
- Using point to analysis (SPARK package) to improve the precision of resultsMethod Detail |
---|
protected Map getStartToBeginNodes()
protected Map<JPegStmt,Chain> getJoinStmtToThread()
protected Map getUnitToPegMap()
protected void addMonitorStmt()
public boolean addPeg(PegGraph pg, Chain chain)
protected void buildSuccsForInlining(JPegStmt stmt, Chain chain, PegGraph inlinee)
protected void buildMaps(PegGraph pg)
protected void buildPreds()
public void computeMonitorObjs()
protected boolean getNeedInlining()
protected FlowSet getAllNodes()
protected HashMap getUnitToSuccs()
protected HashMap getUnitToPreds()
public Body getBody()
public List getHeads()
DirectedGraph
getHeads
in interface DirectedGraph
public List getTails()
DirectedGraph
getTails
in interface DirectedGraph
public List getPredsOf(Object s)
DirectedGraph
getPredsOf
in interface DirectedGraph
public List getSuccsOf(Object s)
DirectedGraph
getSuccsOf
in interface DirectedGraph
public Set getCanNotBeCompacted()
public int size()
DirectedGraph
size
in interface DirectedGraph
public Iterator mainIterator()
public Iterator iterator()
DirectedGraph
iterator
in interface Iterable
iterator
in interface DirectedGraph
public String toString()
toString
in class Object
protected Set<Unit> getExceHandlers()
protected void setMonitor(Map<String,FlowSet> m)
public Map<String,FlowSet> getMonitor()
public Set<Object> getMonitorObjs()
protected Set getThreadAllocSites()
protected Set<JPegStmt> getSpecialJoin()
public HashSet<List> getSynch()
public Map<JPegStmt,List> getStartToThread()
public Map getStartToAllocNodes()
protected Map<String,FlowSet> getWaitingNodes()
public Map<String,Set<JPegStmt>> getNotifyAll()
protected Map<AllocNode,String> getAllocNodeToObj()
public Map<AllocNode,PegChain> getAllocNodeToThread()
protected Map getThreadNameToStart()
public PegChain getMainPegChain()
public Set getMethodsNeedingInlining()
protected void testIterator()
public void testWaitingNodes()
protected void testStartToThread()
protected void testUnitToPeg(HashMap unitToPeg)
protected void testUnitToSucc()
protected void testUnitToPred()
protected void addTag()
protected void testSynch()
protected void testThreadNameToStart()
protected void testJoinStmtToThread()
protected void testPegChain(Chain chain)
protected void computeEdgeAndThreadNo()
protected void testList(List list)
protected void testSet(Set set, String name)
public void testMonitor()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |