Class CHACallGraph

  • All Implemented Interfaces:
    it.unive.lisa.util.datastructures.graph.Graph<it.unive.lisa.interprocedural.callgraph.CallGraph,​it.unive.lisa.interprocedural.callgraph.CallGraphNode,​it.unive.lisa.interprocedural.callgraph.CallGraphEdge>

    public class CHACallGraph
    extends it.unive.lisa.interprocedural.callgraph.BaseCallGraph
    A call graph constructed following the Class Hierarchy Analysis as defined in: Frank Tip and Jens Palsberg. 2000. Scalable propagation-based call graph construction algorithms. In Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '00). Association for Computing Machinery, New York, NY, USA, 281–293. DOI:https://doi.org/10.1145/353171.353190
    • Field Summary

      • Fields inherited from class it.unive.lisa.util.datastructures.graph.BaseGraph

        adjacencyMatrix, entrypoints
    • Constructor Summary

      Constructors 
      Constructor Description
      CHACallGraph()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Collection<it.unive.lisa.type.Type> getPossibleTypesOfReceiver​(it.unive.lisa.program.cfg.statement.Expression receiver, java.util.Set<it.unive.lisa.type.Type> types)  
      • Methods inherited from class it.unive.lisa.interprocedural.callgraph.BaseCallGraph

        checkMember, getCallSites, init, matchCodeMemberName, registerCall, resolve, resolveInstance, resolveNonInstance
      • Methods inherited from class it.unive.lisa.interprocedural.callgraph.CallGraph

        getCallees, getCallees, getCalleesTransitively, getCalleesTransitively, getCallers, getCallers, getCallersTransitively, getCallersTransitively, getCallSites, getRecursions, getRecursionsContaining
      • Methods inherited from class it.unive.lisa.util.datastructures.graph.BaseGraph

        addEdge, addNode, addNode, containsEdge, containsNode, followersOf, getAdjacencyMatrix, getEdgeConnecting, getEdges, getEdgesConnecting, getEdgesCount, getEntrypoints, getIngoingEdges, getNodes, getNodesCount, getOutgoingEdges, isEqualTo, predecessorsOf, toSerializableGraph, toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface it.unive.lisa.util.datastructures.graph.Graph

        accept, getCycleEntries, toSerializableGraph
    • Constructor Detail

      • CHACallGraph

        public CHACallGraph()
    • Method Detail

      • getPossibleTypesOfReceiver

        public java.util.Collection<it.unive.lisa.type.Type> getPossibleTypesOfReceiver​(it.unive.lisa.program.cfg.statement.Expression receiver,
                                                                                        java.util.Set<it.unive.lisa.type.Type> types)
        Specified by:
        getPossibleTypesOfReceiver in class it.unive.lisa.interprocedural.callgraph.BaseCallGraph