harpoon.Analysis.Quads
Class CallGraphImpl

java.lang.Object
  extended by jpaul.Graphs.DiGraph<HMethod>
      extended by harpoon.Analysis.CallGraph
          extended by harpoon.Analysis.Quads.CallGraph
              extended by harpoon.Analysis.Quads.CallGraphImpl

public class CallGraphImpl
extends CallGraph

CallGraphImpl constructs a simple directed call graph. This is the most conservative implementation of CallGraph.

Version:
$Id: CallGraphImpl.java,v 1.13 2005/10/05 16:10:22 salcianu Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>

Field Summary
protected  HCodeFactory hcf
           
 
Fields inherited from class harpoon.Analysis.CallGraph
navigator
 
Fields inherited from class jpaul.Graphs.DiGraph
CACHING
 
Constructor Summary
CallGraphImpl(ClassHierarchy ch, HCodeFactory hcf)
          Creates a CallGraph using the specified ClassHierarchy.
 
Method Summary
 Set<HMethod> callableMethods()
          Returns the set of all the methods that can be called in the execution of the program.
 HMethod[] calls(HMethod m)
          Return a list of all possible methods called by this method.
 HMethod[] calls(HMethod m, CALL cs)
          Return an array containing all possible methods called by this method at a particular call site.
 CALL[] getCallSites(HMethod hm)
          Returns a list of all CALLs quads in the code of hm.
 Set<HMethod> getRunMethods()
          Safe implementation of getRunMethods: returns the set of callable methods named "run", with no argument and declared by a subclass of java.lang.Thread.
 
Methods inherited from class harpoon.Analysis.CallGraph
getBiDiNavigator, getForwardNavigator, getRoots
 
Methods inherited from class jpaul.Graphs.DiGraph
constructBiDiNavigator, dfs, dfs2, diGraph, diGraph, findPath, findPath, forAllVertices, getComponentDiGraph, numArcs, numVertices, reverseDiGraph, subDiGraph, toString, transitivePred, transitivePred, transitiveSucc, transitiveSucc, union, vertices
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

hcf

protected HCodeFactory hcf
Constructor Detail

CallGraphImpl

public CallGraphImpl(ClassHierarchy ch,
                     HCodeFactory hcf)
Creates a CallGraph using the specified ClassHierarchy. hcf must be a code factory that generates quad-ssi or quad-no-ssa form.

Method Detail

calls

public HMethod[] calls(HMethod m)
Return a list of all possible methods called by this method.

Specified by:
calls in class CallGraph

calls

public HMethod[] calls(HMethod m,
                       CALL cs)
Return an array containing all possible methods called by this method at a particular call site.

Specified by:
calls in class CallGraph

callableMethods

public Set<HMethod> callableMethods()
Returns the set of all the methods that can be called in the execution of the program.

Specified by:
callableMethods in class CallGraph

getCallSites

public CALL[] getCallSites(HMethod hm)
Returns a list of all CALLs quads in the code of hm.

Specified by:
getCallSites in class CallGraph

getRunMethods

public Set<HMethod> getRunMethods()
Safe implementation of getRunMethods: returns the set of callable methods named "run", with no argument and declared by a subclass of java.lang.Thread.

Overrides:
getRunMethods in class CallGraph
Returns:
set of all run() methods that may be the bodies of a thread started by the program (optional operation).