Loading sdg-core/src/main/java/es/upv/mist/slicing/graphs/ExpressionObjectTreeFinder.java +27 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,33 @@ public class ExpressionObjectTreeFinder { } throw new IllegalStateException("Could not find USE(-output-) corresponding to call " + call); } @Override public void visit(ArrayCreationExpr n, String arg) {} @Override public void visit(ArrayInitializerExpr n, String arg) {} @Override public void visit(BinaryExpr n, String arg) {} @Override public void visit(ClassExpr n, String arg) {} @Override public void visit(InstanceOfExpr n, String arg) {} @Override public void visit(UnaryExpr n, String arg) {} @Override public void visit(LambdaExpr n, String arg) {} @Override public void visit(MethodReferenceExpr n, String arg) {} @Override public void visit(PatternExpr n, String arg) {} }, ""); return list; } Loading sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralActionFinder.java +5 −4 Original line number Diff line number Diff line Loading @@ -172,7 +172,8 @@ public abstract class InterproceduralActionFinder<A extends VariableAction> exte Set<A> set = new HashSet<>(); for (Iterator<A> it = filteredStream.iterator(); it.hasNext(); ) { A a = it.next(); if (set.contains(a) && a.hasObjectTree()) { if (set.contains(a)) { if (a.hasObjectTree()) for (A aFromSet : set) if (aFromSet.hashCode() == a.hashCode() && Objects.equals(aFromSet, a)) aFromSet.getObjectTree().addAll(a.getObjectTree()); Loading sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralDefinitionFinder.java +2 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ public class InterproceduralDefinitionFinder extends InterproceduralActionFinder if (scope.isPresent()) { extractOutputVariablesAsMovables(scope.get(), movables, graphNode, actualOut, def); } else { assert def.hasObjectTree(); var movableDef = new Definition(DeclarationType.FIELD, "this", graphNode, (ObjectTree) def.getObjectTree().clone()); movables.add(new Movable(movableDef, actualOut)); } Loading @@ -75,6 +76,7 @@ public class InterproceduralDefinitionFinder extends InterproceduralActionFinder Set<Expression> defExpressions = new HashSet<>(); e.accept(new OutNodeVariableVisitor(), defExpressions); for (Expression expression : defExpressions) { assert def.hasObjectTree(); DeclarationType type = DeclarationType.valueOf(expression); Definition inner = new Definition(type, expression.toString(), graphNode, (ObjectTree) def.getObjectTree().clone()); if (defExpressions.size() > 1) Loading sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralUsageFinder.java +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public class InterproceduralUsageFinder extends InterproceduralActionFinder<Usag GraphNode<?> graphNode = edge.getGraphNode(); if (use.isParameter()) { if (!use.isPrimitive()) { assert use.hasObjectTree(); ActualIONode actualIn = locateActualInNode(edge, use.getName()); Definition def = new Definition(VariableAction.DeclarationType.SYNTHETIC, "-arg-in-", graphNode, (ObjectTree) use.getObjectTree().clone()); Movable movDef = new Movable(def, actualIn); Loading Loading
sdg-core/src/main/java/es/upv/mist/slicing/graphs/ExpressionObjectTreeFinder.java +27 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,33 @@ public class ExpressionObjectTreeFinder { } throw new IllegalStateException("Could not find USE(-output-) corresponding to call " + call); } @Override public void visit(ArrayCreationExpr n, String arg) {} @Override public void visit(ArrayInitializerExpr n, String arg) {} @Override public void visit(BinaryExpr n, String arg) {} @Override public void visit(ClassExpr n, String arg) {} @Override public void visit(InstanceOfExpr n, String arg) {} @Override public void visit(UnaryExpr n, String arg) {} @Override public void visit(LambdaExpr n, String arg) {} @Override public void visit(MethodReferenceExpr n, String arg) {} @Override public void visit(PatternExpr n, String arg) {} }, ""); return list; } Loading
sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralActionFinder.java +5 −4 Original line number Diff line number Diff line Loading @@ -172,7 +172,8 @@ public abstract class InterproceduralActionFinder<A extends VariableAction> exte Set<A> set = new HashSet<>(); for (Iterator<A> it = filteredStream.iterator(); it.hasNext(); ) { A a = it.next(); if (set.contains(a) && a.hasObjectTree()) { if (set.contains(a)) { if (a.hasObjectTree()) for (A aFromSet : set) if (aFromSet.hashCode() == a.hashCode() && Objects.equals(aFromSet, a)) aFromSet.getObjectTree().addAll(a.getObjectTree()); Loading
sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralDefinitionFinder.java +2 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ public class InterproceduralDefinitionFinder extends InterproceduralActionFinder if (scope.isPresent()) { extractOutputVariablesAsMovables(scope.get(), movables, graphNode, actualOut, def); } else { assert def.hasObjectTree(); var movableDef = new Definition(DeclarationType.FIELD, "this", graphNode, (ObjectTree) def.getObjectTree().clone()); movables.add(new Movable(movableDef, actualOut)); } Loading @@ -75,6 +76,7 @@ public class InterproceduralDefinitionFinder extends InterproceduralActionFinder Set<Expression> defExpressions = new HashSet<>(); e.accept(new OutNodeVariableVisitor(), defExpressions); for (Expression expression : defExpressions) { assert def.hasObjectTree(); DeclarationType type = DeclarationType.valueOf(expression); Definition inner = new Definition(type, expression.toString(), graphNode, (ObjectTree) def.getObjectTree().clone()); if (defExpressions.size() > 1) Loading
sdg-core/src/main/java/es/upv/mist/slicing/graphs/sdg/InterproceduralUsageFinder.java +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public class InterproceduralUsageFinder extends InterproceduralActionFinder<Usag GraphNode<?> graphNode = edge.getGraphNode(); if (use.isParameter()) { if (!use.isPrimitive()) { assert use.hasObjectTree(); ActualIONode actualIn = locateActualInNode(edge, use.getName()); Definition def = new Definition(VariableAction.DeclarationType.SYNTHETIC, "-arg-in-", graphNode, (ObjectTree) use.getObjectTree().clone()); Movable movDef = new Movable(def, actualIn); Loading