Loading sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralDefinitionFinder.java +2 −4 Original line number Diff line number Diff line Loading @@ -12,9 +12,7 @@ import es.upv.mist.slicing.nodes.VariableAction; import es.upv.mist.slicing.nodes.io.ActualIONode; import es.upv.mist.slicing.nodes.io.FormalIONode; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.*; import java.util.stream.Stream; /** An interprocedural definition finder, which adds the associated actions to formal and actual nodes in the CFGs. */ Loading @@ -37,7 +35,7 @@ public class InterproceduralDefinitionFinder extends InterproceduralActionFinder @Override protected void handleActualAction(CallGraph.Edge<?> edge, VariableAction.Definition def) { Set<VariableAction.Movable> movables = new HashSet<>(); List<VariableAction.Movable> movables = new LinkedList<>(); GraphNode<?> graphNode = edge.getGraphNode(); ResolvedValueDeclaration resolved = def.getResolvedValueDeclaration(); if (resolved.isParameter()) { Loading sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralUsageFinder.java +3 −3 Original line number Diff line number Diff line Loading @@ -12,9 +12,9 @@ import es.upv.mist.slicing.nodes.VariableVisitor; import es.upv.mist.slicing.nodes.io.ActualIONode; import es.upv.mist.slicing.nodes.io.FormalIONode; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Predicate; import java.util.stream.Stream; Loading @@ -34,7 +34,7 @@ public class InterproceduralUsageFinder extends InterproceduralActionFinder<Vari @Override protected void handleActualAction(CallGraph.Edge<?> edge, VariableAction.Usage use) { Set<VariableAction.Movable> movables = new HashSet<>(); List<VariableAction.Movable> movables = new LinkedList<>(); GraphNode<?> graphNode = edge.getGraphNode(); ResolvedValueDeclaration resolved = use.getResolvedValueDeclaration(); if (resolved.isParameter()) { Loading sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/SDG.java +2 −2 Original line number Diff line number Diff line Loading @@ -28,9 +28,9 @@ import es.upv.mist.slicing.slicing.*; import es.upv.mist.slicing.utils.ASTUtils; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import static es.upv.mist.slicing.graphs.cfg.CFGBuilder.VARIABLE_NAME_OUTPUT; Loading Loading @@ -181,7 +181,7 @@ public class SDG extends Graph implements Sliceable, Buildable<NodeList<Compilat // A node defines -output- var def = new VariableAction.Definition(null, VARIABLE_NAME_OUTPUT, graphNode); var defMov = new VariableAction.Movable(def, CallNode.Return.create(edge.getCall())); graphNode.addActionsForCall(Set.of(defMov), edge.getCall(), false); graphNode.addActionsForCall(List.of(defMov), edge.getCall(), false); // The container of the call uses -output- var use = new VariableAction.Usage(null, VARIABLE_NAME_OUTPUT, graphNode); graphNode.addActionsAfterCall(edge.getCall(), use); Loading sdg-core/src/main/java/es/upv/mist/slicing/nodes/GraphNode.java +5 −2 Original line number Diff line number Diff line Loading @@ -9,7 +9,10 @@ import es.upv.mist.slicing.graphs.pdg.PDG; import es.upv.mist.slicing.graphs.sdg.SDG; import es.upv.mist.slicing.utils.ASTUtils; import java.util.*; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Objects; /** * Represents a node in the various graphs ({@link CFG CFG}, {@link PDG PDG} and {@link SDG SDG}), Loading Loading @@ -117,7 +120,7 @@ public class GraphNode<N extends Node> implements Comparable<GraphNode<?>> { } /** Append or prepend the given set of actions to the actions of the given call. */ public void addActionsForCall(Set<VariableAction.Movable> actions, Resolvable<? extends ResolvedMethodLikeDeclaration> call, boolean prepend) { public void addActionsForCall(List<VariableAction.Movable> actions, Resolvable<? extends ResolvedMethodLikeDeclaration> call, boolean prepend) { for (int i = 0; i < variableActions.size(); i++) { VariableAction var = variableActions.get(i); if (var instanceof VariableAction.CallMarker) { Loading sdg-core/src/main/java/es/upv/mist/slicing/nodes/VariableVisitor.java +2 −2 Original line number Diff line number Diff line Loading @@ -20,8 +20,8 @@ import es.upv.mist.slicing.utils.Logger; import java.util.Deque; import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Set; import static es.upv.mist.slicing.graphs.cfg.CFGBuilder.VARIABLE_NAME_OUTPUT; Loading Loading @@ -272,7 +272,7 @@ public class VariableVisitor extends GraphNodeContentVisitor<VariableVisitor.Act // A node defines -output- var defOutput = new VariableAction.Definition(null, VARIABLE_NAME_OUTPUT, graphNode); var defOutputMov = new VariableAction.Movable(defOutput, CallNode.Return.create(n)); graphNode.addActionsForCall(Set.of(defOutputMov), n, false); graphNode.addActionsForCall(List.of(defOutputMov), n, false); // The container of the call defines this and then uses -output- graphNode.addActionsAfterCall(n, new VariableAction.Definition(null, realName4this, graphNode), Loading Loading
sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralDefinitionFinder.java +2 −4 Original line number Diff line number Diff line Loading @@ -12,9 +12,7 @@ import es.upv.mist.slicing.nodes.VariableAction; import es.upv.mist.slicing.nodes.io.ActualIONode; import es.upv.mist.slicing.nodes.io.FormalIONode; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.*; import java.util.stream.Stream; /** An interprocedural definition finder, which adds the associated actions to formal and actual nodes in the CFGs. */ Loading @@ -37,7 +35,7 @@ public class InterproceduralDefinitionFinder extends InterproceduralActionFinder @Override protected void handleActualAction(CallGraph.Edge<?> edge, VariableAction.Definition def) { Set<VariableAction.Movable> movables = new HashSet<>(); List<VariableAction.Movable> movables = new LinkedList<>(); GraphNode<?> graphNode = edge.getGraphNode(); ResolvedValueDeclaration resolved = def.getResolvedValueDeclaration(); if (resolved.isParameter()) { Loading
sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralUsageFinder.java +3 −3 Original line number Diff line number Diff line Loading @@ -12,9 +12,9 @@ import es.upv.mist.slicing.nodes.VariableVisitor; import es.upv.mist.slicing.nodes.io.ActualIONode; import es.upv.mist.slicing.nodes.io.FormalIONode; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Predicate; import java.util.stream.Stream; Loading @@ -34,7 +34,7 @@ public class InterproceduralUsageFinder extends InterproceduralActionFinder<Vari @Override protected void handleActualAction(CallGraph.Edge<?> edge, VariableAction.Usage use) { Set<VariableAction.Movable> movables = new HashSet<>(); List<VariableAction.Movable> movables = new LinkedList<>(); GraphNode<?> graphNode = edge.getGraphNode(); ResolvedValueDeclaration resolved = use.getResolvedValueDeclaration(); if (resolved.isParameter()) { Loading
sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/SDG.java +2 −2 Original line number Diff line number Diff line Loading @@ -28,9 +28,9 @@ import es.upv.mist.slicing.slicing.*; import es.upv.mist.slicing.utils.ASTUtils; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import static es.upv.mist.slicing.graphs.cfg.CFGBuilder.VARIABLE_NAME_OUTPUT; Loading Loading @@ -181,7 +181,7 @@ public class SDG extends Graph implements Sliceable, Buildable<NodeList<Compilat // A node defines -output- var def = new VariableAction.Definition(null, VARIABLE_NAME_OUTPUT, graphNode); var defMov = new VariableAction.Movable(def, CallNode.Return.create(edge.getCall())); graphNode.addActionsForCall(Set.of(defMov), edge.getCall(), false); graphNode.addActionsForCall(List.of(defMov), edge.getCall(), false); // The container of the call uses -output- var use = new VariableAction.Usage(null, VARIABLE_NAME_OUTPUT, graphNode); graphNode.addActionsAfterCall(edge.getCall(), use); Loading
sdg-core/src/main/java/es/upv/mist/slicing/nodes/GraphNode.java +5 −2 Original line number Diff line number Diff line Loading @@ -9,7 +9,10 @@ import es.upv.mist.slicing.graphs.pdg.PDG; import es.upv.mist.slicing.graphs.sdg.SDG; import es.upv.mist.slicing.utils.ASTUtils; import java.util.*; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Objects; /** * Represents a node in the various graphs ({@link CFG CFG}, {@link PDG PDG} and {@link SDG SDG}), Loading Loading @@ -117,7 +120,7 @@ public class GraphNode<N extends Node> implements Comparable<GraphNode<?>> { } /** Append or prepend the given set of actions to the actions of the given call. */ public void addActionsForCall(Set<VariableAction.Movable> actions, Resolvable<? extends ResolvedMethodLikeDeclaration> call, boolean prepend) { public void addActionsForCall(List<VariableAction.Movable> actions, Resolvable<? extends ResolvedMethodLikeDeclaration> call, boolean prepend) { for (int i = 0; i < variableActions.size(); i++) { VariableAction var = variableActions.get(i); if (var instanceof VariableAction.CallMarker) { Loading
sdg-core/src/main/java/es/upv/mist/slicing/nodes/VariableVisitor.java +2 −2 Original line number Diff line number Diff line Loading @@ -20,8 +20,8 @@ import es.upv.mist.slicing.utils.Logger; import java.util.Deque; import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Set; import static es.upv.mist.slicing.graphs.cfg.CFGBuilder.VARIABLE_NAME_OUTPUT; Loading Loading @@ -272,7 +272,7 @@ public class VariableVisitor extends GraphNodeContentVisitor<VariableVisitor.Act // A node defines -output- var defOutput = new VariableAction.Definition(null, VARIABLE_NAME_OUTPUT, graphNode); var defOutputMov = new VariableAction.Movable(defOutput, CallNode.Return.create(n)); graphNode.addActionsForCall(Set.of(defOutputMov), n, false); graphNode.addActionsForCall(List.of(defOutputMov), n, false); // The container of the call defines this and then uses -output- graphNode.addActionsAfterCall(n, new VariableAction.Definition(null, realName4this, graphNode), Loading