Loading iacfg/src/main/java/es/upv/mist/slicing/graphs/icfg/ICFG.java +28 −23 Original line number Diff line number Diff line Loading @@ -94,9 +94,11 @@ public class ICFG extends es.upv.mist.slicing.graphs.Graph implements Buildable< protected CallSCRGraph cSCRs; /** A map to locate the set of {@link #intraSCRs} nodes that correspond (transitively) to a given {@link #cSCRs} node. */ protected final Map<CallSCR, Set<IntraSCR>> transitiveMap = new HashMap<>(); /** The strongly connected components of the {@link ICFG}, computed while ignoring /** * The strongly connected components of the {@link ICFG}, computed while ignoring * interprocedural edges that connect {@link #cSCRs} nodes. <br> * Fulfils steps 2-3 of the Nanda-Ramesh topological numbers' algorithm. */ * Fulfils steps 2-3 of the Nanda-Ramesh topological numbers' algorithm. */ protected IntraSCRGraph intraSCRs; /** Non-Recursive interprocedural Arcs from {@link #intraSCRs} */ protected Set<Triple<GraphNode<?>, GraphNode<?>, ControlFlowArc>> interprocNonRecArcs = new HashSet<>(); Loading Loading @@ -510,7 +512,9 @@ public class ICFG extends es.upv.mist.slicing.graphs.Graph implements Buildable< }, null); } /** Create class graph from the list of compilation units. */ /** * Create class graph from the list of compilation units. */ protected void createClassGraph(NodeList<CompilationUnit> nodeList) { ClassGraph.getNewInstance().build(nodeList); } Loading Loading @@ -631,6 +635,7 @@ public class ICFG extends es.upv.mist.slicing.graphs.Graph implements Buildable< /** * Extracts movable nodes from a single call, recursively. * * @param iterator An iterator over a GraphNode's variable actions, which will be consumed * until the closing CallMarker that matches callMarker is found. * @param callMarker The call marker that enters the call to be analyzed. Loading iacfg/src/main/java/es/upv/mist/slicing/graphs/scrs/AbstractSCR.java +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import java.util.Set; /** * An abstract Strongly Connected Region (or Component) of a graph g, implemented as a subgraph of g. * This SCR can be freely modified (edges, vertices added and removed), and it will remain a part of the condensation. * * @param <V> The type of vertices in the original graph. * @param <E> The type of edges in the original graph. * @see AbstractSCRAlgorithm Loading iacfg/src/main/java/es/upv/mist/slicing/graphs/scrs/AbstractSCRAlgorithm.java +1 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ import java.util.Set; * This class uses a more specific type for the vertices of the condensation, yielding {@code Graph<R, DefaultEdge>} * for the condensation. This type is a wrapper on the subgraph, with implementations of {@code hashCode} and {@code equals} * that do not change when the graph changes, therefore allowing modifications. * * @param <V> The type of vertices on the original graph. * @param <E> The type of edges on the original graph. * @param <R> The type of vertices on the condensed graph. Loading iacfg/src/main/java/es/upv/mist/slicing/graphs/scrs/CallSCR.java +1 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import java.util.Set; /** * A strongly connected region (or component) on a {@link CallGraph}. * * @see AbstractSCR */ public class CallSCR extends AbstractSCR<CallGraph.Vertex, CallGraph.Edge<?>> { Loading iacfg/src/main/java/es/upv/mist/slicing/graphs/scrs/CallSCRGraph.java +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import java.util.Set; /** * A condensation of the strongly connected regions of a {@link CallGraph}. * * @see AbstractSCRAlgorithm * @see CallSCR CallSCR: The component members of this graph. */ Loading Loading
iacfg/src/main/java/es/upv/mist/slicing/graphs/icfg/ICFG.java +28 −23 Original line number Diff line number Diff line Loading @@ -94,9 +94,11 @@ public class ICFG extends es.upv.mist.slicing.graphs.Graph implements Buildable< protected CallSCRGraph cSCRs; /** A map to locate the set of {@link #intraSCRs} nodes that correspond (transitively) to a given {@link #cSCRs} node. */ protected final Map<CallSCR, Set<IntraSCR>> transitiveMap = new HashMap<>(); /** The strongly connected components of the {@link ICFG}, computed while ignoring /** * The strongly connected components of the {@link ICFG}, computed while ignoring * interprocedural edges that connect {@link #cSCRs} nodes. <br> * Fulfils steps 2-3 of the Nanda-Ramesh topological numbers' algorithm. */ * Fulfils steps 2-3 of the Nanda-Ramesh topological numbers' algorithm. */ protected IntraSCRGraph intraSCRs; /** Non-Recursive interprocedural Arcs from {@link #intraSCRs} */ protected Set<Triple<GraphNode<?>, GraphNode<?>, ControlFlowArc>> interprocNonRecArcs = new HashSet<>(); Loading Loading @@ -510,7 +512,9 @@ public class ICFG extends es.upv.mist.slicing.graphs.Graph implements Buildable< }, null); } /** Create class graph from the list of compilation units. */ /** * Create class graph from the list of compilation units. */ protected void createClassGraph(NodeList<CompilationUnit> nodeList) { ClassGraph.getNewInstance().build(nodeList); } Loading Loading @@ -631,6 +635,7 @@ public class ICFG extends es.upv.mist.slicing.graphs.Graph implements Buildable< /** * Extracts movable nodes from a single call, recursively. * * @param iterator An iterator over a GraphNode's variable actions, which will be consumed * until the closing CallMarker that matches callMarker is found. * @param callMarker The call marker that enters the call to be analyzed. Loading
iacfg/src/main/java/es/upv/mist/slicing/graphs/scrs/AbstractSCR.java +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import java.util.Set; /** * An abstract Strongly Connected Region (or Component) of a graph g, implemented as a subgraph of g. * This SCR can be freely modified (edges, vertices added and removed), and it will remain a part of the condensation. * * @param <V> The type of vertices in the original graph. * @param <E> The type of edges in the original graph. * @see AbstractSCRAlgorithm Loading
iacfg/src/main/java/es/upv/mist/slicing/graphs/scrs/AbstractSCRAlgorithm.java +1 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ import java.util.Set; * This class uses a more specific type for the vertices of the condensation, yielding {@code Graph<R, DefaultEdge>} * for the condensation. This type is a wrapper on the subgraph, with implementations of {@code hashCode} and {@code equals} * that do not change when the graph changes, therefore allowing modifications. * * @param <V> The type of vertices on the original graph. * @param <E> The type of edges on the original graph. * @param <R> The type of vertices on the condensed graph. Loading
iacfg/src/main/java/es/upv/mist/slicing/graphs/scrs/CallSCR.java +1 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import java.util.Set; /** * A strongly connected region (or component) on a {@link CallGraph}. * * @see AbstractSCR */ public class CallSCR extends AbstractSCR<CallGraph.Vertex, CallGraph.Edge<?>> { Loading
iacfg/src/main/java/es/upv/mist/slicing/graphs/scrs/CallSCRGraph.java +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import java.util.Set; /** * A condensation of the strongly connected regions of a {@link CallGraph}. * * @see AbstractSCRAlgorithm * @see CallSCR CallSCR: The component members of this graph. */ Loading