From f5dcb1810317ff1a8b0d9e96b75222a2abcf9a4f Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Fri, 22 Mar 2019 12:29:09 +0100 Subject: [PATCH] use IN_CONSTRUCTION state in all incremental JastAdd drivers when deserializing the model --- .../train/jastadd/driver/JastaddDriver.java | 15 ++--- .../train/jastadd/driver/JastaddDriver.java | 59 ++++++++++++++++++ .../train/jastadd/driver/JastaddDriver.java | 12 ++-- .../train/jastadd/driver/JastaddDriver.java | 61 +++++++++++++++++++ .../train/jastadd/driver/JastaddDriver.java | 0 .../train/jastadd/driver/JastaddDriver.java | 14 ++--- 6 files changed, 134 insertions(+), 27 deletions(-) rename trainbenchmark/{trainbenchmark-tool-jastadd-namelookup-base => trainbenchmark-tool-jastadd-intrinsic-incremental}/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java (88%) create mode 100644 trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java create mode 100644 trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java rename trainbenchmark/{trainbenchmark-tool-jastadd-intrinsic-base => trainbenchmark-tool-jastadd-namelookup}/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java (100%) diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java similarity index 88% rename from trainbenchmark/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java index ee595c277..94ccaeb7d 100644 --- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java +++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java @@ -6,21 +6,14 @@ import de.tudresden.inf.st.train.jastadd.driver.deserializer.JsonDeserializer; import hu.bme.mit.trainbenchmark.benchmark.driver.Driver; import java.io.File; -import java.io.IOException; public class JastaddDriver extends Driver { - RailwayContainer root; - - private int idCounter = 0; - - public boolean flushCaches() { - return flushCaches; - } - private final boolean flushCaches; private final ASTState.Trace.Receiver receiver; + private RailwayContainer root; + private int idCounter = 0; public JastaddDriver(boolean flushCaches, ASTState.Trace.Receiver receiver) { super(); @@ -42,10 +35,12 @@ public class JastaddDriver extends Driver { } @Override - public void read(final String modelPath) throws IOException { + public void read(final String modelPath) { File modelFile = new File(modelPath); + new RailwayContainer().state().enterConstruction(); root = JsonDeserializer.read(modelFile); + root.state().exitConstruction(); // enable tracing if there is a receiver if (receiver != null) { diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java new file mode 100644 index 000000000..207452385 --- /dev/null +++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java @@ -0,0 +1,59 @@ +package de.tudresden.inf.st.train.jastadd.driver; + +import de.tudresden.inf.st.train.jastadd.ast.ASTState; +import de.tudresden.inf.st.train.jastadd.ast.RailwayContainer; +import de.tudresden.inf.st.train.jastadd.driver.deserializer.JsonDeserializer; +import hu.bme.mit.trainbenchmark.benchmark.driver.Driver; + +import java.io.File; + + +public class JastaddDriver extends Driver { + + private final boolean flushCaches; + private final ASTState.Trace.Receiver receiver; + private RailwayContainer root; + private int idCounter = 0; + + public JastaddDriver(boolean flushCaches, ASTState.Trace.Receiver receiver) { + super(); + this.flushCaches = flushCaches; + this.receiver = receiver; + } + + public static JastaddDriver create(boolean flushCaches, ASTState.Trace.Receiver receiver) { + return new JastaddDriver(flushCaches, receiver); + } + + public int nextId() { + idCounter--; + return idCounter; + } + + public RailwayContainer getModel() { + return root; + } + + @Override + public void read(final String modelPath) { + + File modelFile = new File(modelPath); + root = JsonDeserializer.read(modelFile); + + // enable tracing if there is a receiver + if (receiver != null) { + getModel().trace().setReceiver(receiver); + } + } + + @Override + public String getPostfix() { + return "-jastadd-manual.json"; + } + + public void flushCache() { + if (flushCaches) { + getModel().flushTreeCache(); + } + } +} diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java index 302490b8f..6e7871d36 100644 --- a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java +++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java @@ -6,15 +6,15 @@ import de.tudresden.inf.st.train.jastadd.driver.deserializer.JsonDeserializer; import hu.bme.mit.trainbenchmark.benchmark.driver.Driver; import java.io.File; -import java.io.IOException; public class JastaddDriver extends Driver { private final boolean flushCaches; private final ASTState.Trace.Receiver receiver; - RailwayContainer root; + private RailwayContainer root; private int idCounter = 0; + public JastaddDriver(boolean flushCaches, ASTState.Trace.Receiver receiver) { super(); this.flushCaches = flushCaches; @@ -25,10 +25,6 @@ public class JastaddDriver extends Driver { return new JastaddDriver(flushCaches, receiver); } - public boolean flushCaches() { - return flushCaches; - } - public int nextId() { idCounter--; return idCounter; @@ -39,10 +35,12 @@ public class JastaddDriver extends Driver { } @Override - public void read(final String modelPath) throws IOException { + public void read(final String modelPath) { File modelFile = new File(modelPath); + new RailwayContainer().state().enterConstruction(); root = JsonDeserializer.read(modelFile); + root.state().exitConstruction(); // enable tracing if there is a receiver if (receiver != null) { diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java new file mode 100644 index 000000000..94ccaeb7d --- /dev/null +++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java @@ -0,0 +1,61 @@ +package de.tudresden.inf.st.train.jastadd.driver; + +import de.tudresden.inf.st.train.jastadd.ast.ASTState; +import de.tudresden.inf.st.train.jastadd.ast.RailwayContainer; +import de.tudresden.inf.st.train.jastadd.driver.deserializer.JsonDeserializer; +import hu.bme.mit.trainbenchmark.benchmark.driver.Driver; + +import java.io.File; + + +public class JastaddDriver extends Driver { + + private final boolean flushCaches; + private final ASTState.Trace.Receiver receiver; + private RailwayContainer root; + private int idCounter = 0; + + public JastaddDriver(boolean flushCaches, ASTState.Trace.Receiver receiver) { + super(); + this.flushCaches = flushCaches; + this.receiver = receiver; + } + + public static JastaddDriver create(boolean flushCaches, ASTState.Trace.Receiver receiver) { + return new JastaddDriver(flushCaches, receiver); + } + + public int nextId() { + idCounter--; + return idCounter; + } + + public RailwayContainer getModel() { + return root; + } + + @Override + public void read(final String modelPath) { + + File modelFile = new File(modelPath); + new RailwayContainer().state().enterConstruction(); + root = JsonDeserializer.read(modelFile); + root.state().exitConstruction(); + + // enable tracing if there is a receiver + if (receiver != null) { + getModel().trace().setReceiver(receiver); + } + } + + @Override + public String getPostfix() { + return "-jastadd-manual.json"; + } + + public void flushCache() { + if (flushCaches) { + getModel().flushTreeCache(); + } + } +} diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java similarity index 100% rename from trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java rename to trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java index 668f03e49..eeee13f0d 100644 --- a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java +++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java @@ -3,8 +3,6 @@ package de.tudresden.inf.st.train.jastadd.driver; import de.tudresden.inf.st.train.jastadd.ast.ASTState; import de.tudresden.inf.st.train.jastadd.ast.DeserializationException; import de.tudresden.inf.st.train.jastadd.ast.RailwayContainer; -import de.tudresden.inf.st.train.jastadd.ast.SerializationException; -import de.tudresden.inf.st.train.jastadd.driver.deserializer.JsonDeserializer; import hu.bme.mit.trainbenchmark.benchmark.driver.Driver; import java.io.File; @@ -13,16 +11,10 @@ import java.io.IOException; public class JastaddDriver extends Driver { - RailwayContainer root; - - private int idCounter = 0; - - public boolean flushCaches() { - return flushCaches; - } - private final boolean flushCaches; private final ASTState.Trace.Receiver receiver; + private RailwayContainer root; + private int idCounter = 0; public JastaddDriver(boolean flushCaches, ASTState.Trace.Receiver receiver) { super(); @@ -48,7 +40,9 @@ public class JastaddDriver extends Driver { File modelFile = new File(modelPath); try { + new RailwayContainer().state().enterConstruction(); root = RailwayContainer.deserialize(modelFile); + root.state().exitConstruction(); } catch (DeserializationException e) { throw new IOException(e); } -- GitLab