Commit 45da4607 authored by Javier Costa's avatar Javier Costa
Browse files

Data dependency begin

parent 61010d6b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -35,5 +35,11 @@
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>guru.nidi</groupId>
            <artifactId>graphviz-java</artifactId>
            <version>0.8.3</version>
        </dependency>

    </dependencies>
</project>
 No newline at end of file
+4 −1
Original line number Diff line number Diff line
@@ -14,12 +14,15 @@ import tfm.visitors.PDGVisitor;
import java.io.File;
import java.io.FileNotFoundException;

import static guru.nidi.graphviz.model.Factory.graph;
import static guru.nidi.graphviz.model.Factory.node;

public class Main {

    private static long t0;

    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("/home/jacosro/IdeaProjects/TFM/src/main/java/tfm/programs/Example2.java");
        File file = new File("/home/jacosro/IdeaProjects/TFM/src/main/java/tfm/programs/Example1.java");
        CompilationUnit compilationUnit = JavaParser.parse(file);

        t0 = System.nanoTime();
+4 −3
Original line number Diff line number Diff line
@@ -29,8 +29,9 @@ public abstract class Arc<D extends ArcData> extends edg.graphlib.Arrow<String,
        Node from = (Node) getFrom();
        Node to = (Node) getTo();

        return String.format("\"%s: %s\" -> \"%s: %s\"",
                from.getId(), from.getData(),
                to.getId(), to.getData());
        return String.format("%s -> %s",
                from.getId(),
                to.getId()
        );
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ public class DataDependencyArc extends Arc<VariableArcData> {

    @Override
    public String toGraphvizRepresentation() {
        return String.format("%s [label=\"%s\"]", super.toString(), getData().toString());
        return String.format("%s [style=dashed, color=red, label=\"%s\"]", super.toGraphvizRepresentation(), getData().toString());
    }
}
+23 −3
Original line number Diff line number Diff line
package tfm.graphs;

import edg.graphlib.Arrow;
import tfm.arcs.Arc;
import tfm.arcs.cfg.ControlFlowArc;
import tfm.nodes.CFGNode;
import tfm.nodes.Node;

import java.util.Comparator;
import java.util.stream.Collectors;

public abstract class CFGGraph extends Graph<CFGNode> {

    public CFGGraph() {
        super();
        setRootVertex(new CFGNode(NodeId.getVertexId(), getRootNodeData()));
        setRootVertex(new CFGNode(NodeId.getVertexId(), getRootNodeData(), 0));
    }

    @Override
    public CFGNode addNode(String instruction) {
        CFGNode vertex = new CFGNode(NodeId.getVertexId(), instruction);
    public CFGNode addNode(String instruction, int fileNumber) {
        CFGNode vertex = new CFGNode(NodeId.getVertexId(), instruction, fileNumber);
        this.addVertex(vertex);

        return vertex;
@@ -25,4 +30,19 @@ public abstract class CFGGraph extends Graph<CFGNode> {
    public void addControlFlowEdge(CFGNode from, CFGNode to) {
        super.addEdge((Arrow) new ControlFlowArc(from, to));
    }

    @Override
    public String toGraphvizRepresentation() {
        String lineSep = System.lineSeparator();

        String arrows =
                getArrows().stream()
                        .sorted(Comparator.comparingInt(arrow -> ((Node) arrow.getFrom()).getId()))
                        .map(arrow -> ((Arc) arrow).toGraphvizRepresentation())
                        .collect(Collectors.joining(lineSep));

        return "digraph g{" + lineSep +
                arrows + lineSep +
                "}";
    }
}
Loading