envgen.analysis.stat
Class Monitor

java.lang.Object
  |
  +--envgen.analysis.stat.Monitor

public class Monitor
extends java.lang.Object

Monitor implementation, used for SafeLock analysis.


Field Summary
(package private)  PointsToAnalysis alias
           
(package private)  MultiSet enterLocks
           
(package private)  soot.jimple.Stmt enterMonitor
           
(package private)  soot.jimple.Stmt exitMonitor
           
(package private)  boolean isImplicit
          True if this is implicit monitor created by method's synchronized flag
(package private)  boolean safe
          A monitor is safe, unless proven otherwise by the analysis
(package private)  java.util.HashMap sccMap
          scc mapped to its safeness property
 
Constructor Summary
Monitor(soot.jimple.Stmt enterMonitor, PointsToAnalysis alias)
           
Monitor(soot.jimple.Stmt enterMonitor, PointsToAnalysis alias, boolean isImplicit)
           
 
Method Summary
 void addSCC(soot.toolkits.graph.StronglyConnectedComponents scc)
          assume scc safe unless a path without a wait is found
 boolean containsSCC(soot.toolkits.graph.StronglyConnectedComponents scc)
           
 soot.jimple.Stmt getExitMonitor()
           
protected  MultiSet getLocks(soot.Value lockRef, soot.Unit stmt)
           
 java.util.HashMap getSCCList()
           
 boolean isImplicit()
           
 boolean isSafe()
           
 boolean isSafeSCC(soot.toolkits.graph.StronglyConnectedComponents scc)
           
protected  boolean matchExitMonitor(soot.jimple.Stmt stmt)
           
protected  boolean matchWait(soot.jimple.Stmt stmt)
           
protected  boolean matchWait(soot.jimple.Stmt stmt, soot.toolkits.graph.StronglyConnectedComponents scc)
           
 void setExitMonitor(soot.jimple.Stmt exitMonitor)
           
 void setImplicit(boolean implicit)
           
 void setSafe(boolean safe)
           
 void setSafeSCC(soot.toolkits.graph.StronglyConnectedComponents scc, boolean safe)
           
 void setSCCList(java.util.HashMap sccMap)
           
 java.lang.String toString()
           
 void updateWithCalledMonitors(MultiSet monitors)
          Update Monitor with summary of called methods
 void updateWithInnerMonitor(Monitor inner)
          Update monitor with safeness of an inner monitor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

enterMonitor

soot.jimple.Stmt enterMonitor

exitMonitor

soot.jimple.Stmt exitMonitor

enterLocks

MultiSet enterLocks

sccMap

java.util.HashMap sccMap
scc mapped to its safeness property


alias

PointsToAnalysis alias

isImplicit

boolean isImplicit
True if this is implicit monitor created by method's synchronized flag


safe

boolean safe
A monitor is safe, unless proven otherwise by the analysis

Constructor Detail

Monitor

public Monitor(soot.jimple.Stmt enterMonitor,
               PointsToAnalysis alias)

Monitor

public Monitor(soot.jimple.Stmt enterMonitor,
               PointsToAnalysis alias,
               boolean isImplicit)
Method Detail

isSafe

public boolean isSafe()

setSafe

public void setSafe(boolean safe)

isImplicit

public boolean isImplicit()

setImplicit

public void setImplicit(boolean implicit)

getSCCList

public java.util.HashMap getSCCList()

setSCCList

public void setSCCList(java.util.HashMap sccMap)

isSafeSCC

public boolean isSafeSCC(soot.toolkits.graph.StronglyConnectedComponents scc)

setSafeSCC

public void setSafeSCC(soot.toolkits.graph.StronglyConnectedComponents scc,
                       boolean safe)

containsSCC

public boolean containsSCC(soot.toolkits.graph.StronglyConnectedComponents scc)

setExitMonitor

public void setExitMonitor(soot.jimple.Stmt exitMonitor)

getExitMonitor

public soot.jimple.Stmt getExitMonitor()

matchExitMonitor

protected boolean matchExitMonitor(soot.jimple.Stmt stmt)

matchWait

protected boolean matchWait(soot.jimple.Stmt stmt)

matchWait

protected boolean matchWait(soot.jimple.Stmt stmt,
                            soot.toolkits.graph.StronglyConnectedComponents scc)

updateWithInnerMonitor

public void updateWithInnerMonitor(Monitor inner)
Update monitor with safeness of an inner monitor


updateWithCalledMonitors

public void updateWithCalledMonitors(MultiSet monitors)
Update Monitor with summary of called methods


addSCC

public void addSCC(soot.toolkits.graph.StronglyConnectedComponents scc)
assume scc safe unless a path without a wait is found


getLocks

protected MultiSet getLocks(soot.Value lockRef,
                            soot.Unit stmt)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object