chord.analyses.alias
Interface ICSCG

All Superinterfaces:
IGraph<Pair<Ctxt,joeq.Class.jq_Method>>, ILabeledGraph<Pair<Ctxt,joeq.Class.jq_Method>,joeq.Compiler.Quad.Quad>, java.io.Serializable
All Known Implementing Classes:
CSCG

public interface ICSCG
extends ILabeledGraph<Pair<Ctxt,joeq.Class.jq_Method>,joeq.Compiler.Quad.Quad>

Specification of a context-sensitive call graph.

Author:
Mayur Naik (mhn@cs.stanford.edu)

Method Summary
 boolean calls(Ctxt ctxt1, joeq.Compiler.Quad.Quad invk, Ctxt ctxt2, joeq.Class.jq_Method meth)
          /** Determines whether a given jq_Method invocation site in a given abstract context may call a given jq_Method in a given abstract context.
 java.util.Set<Pair<Ctxt,joeq.Compiler.Quad.Quad>> getCallers(Ctxt ctxt, joeq.Class.jq_Method meth)
          Provides each jq_Method invocation site along with each abstract context from which it may call a given jq_Method in a given abstract context.
 java.util.Set<Ctxt> getContexts(joeq.Class.jq_Method meth)
          Provides the set of all abstract contexts in which a given method may be reachable.
 java.util.Set<Pair<Ctxt,joeq.Class.jq_Method>> getTargets(Ctxt ctxt, joeq.Compiler.Quad.Quad invk)
          Provides the set containing each method along with each abstract context in which it may be called by a given call site in a given abstract context.
 
Methods inherited from interface chord.util.graph.ILabeledGraph
getLabels
 
Methods inherited from interface chord.util.graph.IGraph
getAllPathsBuilder, getBackEdges, getNodeMap, getNodes, getNodesInCycles, getNodesInRPO, getPreds, getRoots, getShortestPathsBuilder, getSimpleCycles, getSuccs, getTopSortedSCCs, hasCycles, hasEdge, hasNode, hasRoot, isConnected, numNodes, numPreds, numRoots, numSuccs
 

Method Detail

getContexts

java.util.Set<Ctxt> getContexts(joeq.Class.jq_Method meth)
Provides the set of all abstract contexts in which a given method may be reachable.

Parameters:
meth - A method.
Returns:
The set of all abstract contexts in which method meth may be reachable.

getTargets

java.util.Set<Pair<Ctxt,joeq.Class.jq_Method>> getTargets(Ctxt ctxt,
                                                          joeq.Compiler.Quad.Quad invk)
Provides the set containing each method along with each abstract context in which it may be called by a given call site in a given abstract context.

Parameters:
ctxt - An abstract context.
invk - A call site.
Returns:
All (ctxt2, meth) pairs such that jq_Method meth may be called in abstract context ctxt2 from jq_Method invocation site invk in abstract context ctxt.

getCallers

java.util.Set<Pair<Ctxt,joeq.Compiler.Quad.Quad>> getCallers(Ctxt ctxt,
                                                             joeq.Class.jq_Method meth)
Provides each jq_Method invocation site along with each abstract context from which it may call a given jq_Method in a given abstract context.

Parameters:
ctxt - An abstract context.
meth - A jq_Method.
Returns:
All (ctxt2, invk) pairs such that jq_Method invocation site invk in abstract context ctxt2 may call jq_Method meth in abstract context ctxt.

calls

boolean calls(Ctxt ctxt1,
              joeq.Compiler.Quad.Quad invk,
              Ctxt ctxt2,
              joeq.Class.jq_Method meth)
/** Determines whether a given jq_Method invocation site in a given abstract context may call a given jq_Method in a given abstract context.

Parameters:
ctxt1 - An abstract context.
invk - A jq_Method invocation site.
ctxt2 - An abstract context.
meth - A jq_Method.
Returns:
true iff jq_Method invocation site invk in abstract context ctxt1 may call jq_Method meth in abstract context ctxt2.