diff --git a/lang/cfg/example/pom.xml b/lang/cfg/example/pom.xml
index 21dc5e1fd..3b3db9c01 100644
--- a/lang/cfg/example/pom.xml
+++ b/lang/cfg/example/pom.xml
@@ -12,7 +12,7 @@
org.metaborg
parent.language
- 2.4.0-SNAPSHOT
+ 2.5.0-SNAPSHOT
diff --git a/lang/cfg/langspec/.mvn/extensions.xml b/lang/cfg/langspec/.mvn/extensions.xml
index 325c0fa23..46099170a 100644
--- a/lang/cfg/langspec/.mvn/extensions.xml
+++ b/lang/cfg/langspec/.mvn/extensions.xml
@@ -3,6 +3,6 @@
org.metaborg
spoofax-maven-plugin-pomless
- 2.4.0-SNAPSHOT
+ 2.5.0-SNAPSHOT
diff --git a/lang/cfg/langspec/pom.xml b/lang/cfg/langspec/pom.xml
index 7601a5581..fb8d49d77 100644
--- a/lang/cfg/langspec/pom.xml
+++ b/lang/cfg/langspec/pom.xml
@@ -12,7 +12,7 @@
org.metaborg
parent.language
- 2.4.0-SNAPSHOT
+ 2.5.0-SNAPSHOT
diff --git a/lang/cfg/test/pom.xml b/lang/cfg/test/pom.xml
index 9c1501546..893a0a021 100644
--- a/lang/cfg/test/pom.xml
+++ b/lang/cfg/test/pom.xml
@@ -12,7 +12,7 @@
org.metaborg
parent.language
- 2.4.0-SNAPSHOT
+ 2.5.0-SNAPSHOT
diff --git a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/full/PullingExecFullBenchmark.java b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/full/TopDownExecFullBenchmark.java
similarity index 96%
rename from runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/full/PullingExecFullBenchmark.java
rename to runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/full/TopDownExecFullBenchmark.java
index baa3b4de2..8aea014cd 100644
--- a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/full/PullingExecFullBenchmark.java
+++ b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/full/TopDownExecFullBenchmark.java
@@ -13,7 +13,7 @@
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.SECONDS)
@State(Scope.Benchmark)
-public class PullingExecFullBenchmark {
+public class TopDownExecFullBenchmark {
@Setup(Level.Invocation)
public void setup(SpoofaxPieState spoofaxPie, WorkspaceState workspace, InfraState infra, PullingExecState exec) throws IOException {
workspace.setup(spoofaxPie);
diff --git a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/DirtyFlaggingExecIncrBenchmark.java b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/BottomUpDirtyTopDownExecIncrBenchmark.java
similarity index 96%
rename from runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/DirtyFlaggingExecIncrBenchmark.java
rename to runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/BottomUpDirtyTopDownExecIncrBenchmark.java
index 723fdfd7b..837b9211d 100644
--- a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/DirtyFlaggingExecIncrBenchmark.java
+++ b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/BottomUpDirtyTopDownExecIncrBenchmark.java
@@ -11,7 +11,7 @@
@BenchmarkMode(Mode.SingleShotTime)
@OutputTimeUnit(TimeUnit.SECONDS)
@State(Scope.Benchmark)
-public class DirtyFlaggingExecIncrBenchmark {
+public class BottomUpDirtyTopDownExecIncrBenchmark {
@Setup(Level.Trial)
public void setupTrial(SpoofaxPieState spoofaxPie, WorkspaceState workspace, IncrState incr, InfraState infra, DirtyFlaggingExecState exec) throws IOException {
workspace.setup(spoofaxPie);
diff --git a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/ObservingExecIncrBenchmark.java b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/BottomUpObservingExecIncrBenchmark.java
similarity index 96%
rename from runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/ObservingExecIncrBenchmark.java
rename to runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/BottomUpObservingExecIncrBenchmark.java
index 24699336e..4abde2beb 100644
--- a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/ObservingExecIncrBenchmark.java
+++ b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/BottomUpObservingExecIncrBenchmark.java
@@ -11,7 +11,7 @@
@BenchmarkMode(Mode.SingleShotTime)
@OutputTimeUnit(TimeUnit.SECONDS)
@State(Scope.Benchmark)
-public class ObservingExecIncrBenchmark {
+public class BottomUpObservingExecIncrBenchmark {
@Setup(Level.Trial)
public void setupTrial(SpoofaxPieState spoofaxPie, WorkspaceState workspace, IncrState incr, InfraState infra, ObservingExecState exec) throws IOException {
workspace.setup(spoofaxPie);
diff --git a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/PullingExecIncrBenchmark.java b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/TopDownExecIncrBenchmark.java
similarity index 96%
rename from runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/PullingExecIncrBenchmark.java
rename to runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/TopDownExecIncrBenchmark.java
index e1df01158..0712045d4 100644
--- a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/PullingExecIncrBenchmark.java
+++ b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/incremental/TopDownExecIncrBenchmark.java
@@ -10,7 +10,7 @@
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.SECONDS)
@State(Scope.Benchmark)
-public class PullingExecIncrBenchmark {
+public class TopDownExecIncrBenchmark {
@Setup(Level.Trial)
public void setupTrial(SpoofaxPieState spoofaxPie, WorkspaceState workspace, IncrState incr, InfraState infra, PullingExecState exec) throws IOException {
workspace.setup(spoofaxPie);
diff --git a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/DirtyFlaggingExecState.java b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/DirtyFlaggingExecState.java
index d5030cb6f..4c473ec5a 100644
--- a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/DirtyFlaggingExecState.java
+++ b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/DirtyFlaggingExecState.java
@@ -2,9 +2,9 @@
import kotlin.Unit;
import mb.pie.runtime.core.ExecException;
-import mb.pie.runtime.core.exec.DirtyFlaggingExecutor;
+import mb.pie.runtime.core.exec.DirtyFlaggingTopDownExecutor;
import mb.pie.runtime.core.exec.ObsFuncApp;
-import mb.pie.runtime.core.impl.exec.DirtyFlaggingExecutorImpl;
+import mb.pie.runtime.core.impl.exec.DirtyFlaggingTopDownExecutorImpl;
import mb.spoofax.runtime.pie.builder.SpoofaxPipeline;
import mb.util.async.NullCancelled;
import mb.vfs.path.PPath;
@@ -19,7 +19,7 @@
@State(Scope.Benchmark)
public class DirtyFlaggingExecState {
- public DirtyFlaggingExecutor executor;
+ public DirtyFlaggingTopDownExecutor executor;
public void setup(SpoofaxPieState spoofaxPieState, WorkspaceState workspaceState, InfraState infraState) {
init(spoofaxPieState, workspaceState, infraState);
@@ -41,7 +41,7 @@ public void exec(WorkspaceState workspaceState, List changedPaths) {
private void init(SpoofaxPieState spoofaxPieState, WorkspaceState workspaceState, InfraState infraState) {
this.executor =
- new DirtyFlaggingExecutorImpl(infraState.store, infraState.cache, infraState.share, infraState.layer,
+ new DirtyFlaggingTopDownExecutorImpl(infraState.store, infraState.cache, infraState.share, infraState.layer,
infraState.logger, infraState.funcs, spoofaxPieState.logger);
final PPath root = workspaceState.root;
try(final Stream stream = root.list(PPaths.directoryPathMatcher())) {
diff --git a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/ObservingExecState.java b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/ObservingExecState.java
index 4b239c85f..8cc9202ea 100644
--- a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/ObservingExecState.java
+++ b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/ObservingExecState.java
@@ -3,14 +3,15 @@
import kotlin.Unit;
import mb.pie.runtime.core.ExecException;
import mb.pie.runtime.core.FuncApp;
-import mb.pie.runtime.core.exec.ExecutionVariant;
-import mb.pie.runtime.core.exec.ObservingExecutor;
-import mb.pie.runtime.core.impl.exec.ObservingExecutorImpl;
+import mb.pie.runtime.core.exec.BottomUpObservingExecutor;
+import mb.pie.runtime.core.exec.BottomUpObservingExecutorFactory.Variant;
+import mb.pie.runtime.core.impl.exec.BottomUpObservingExecutorImpl;
import mb.spoofax.runtime.pie.builder.SpoofaxPipeline;
import mb.spoofax.runtime.pie.generated.processProject;
import mb.util.async.NullCancelled;
import mb.vfs.path.PPath;
import mb.vfs.path.PPaths;
+import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
@@ -21,7 +22,9 @@
@State(Scope.Benchmark)
public class ObservingExecState {
- public ObservingExecutor executor;
+ public BottomUpObservingExecutor executor;
+ @Param({"Naive", "DirtyFlagging"}) public Variant variant;
+
public void setup(SpoofaxPieState spoofaxPieState, WorkspaceState workspaceState, InfraState infraState) {
init(spoofaxPieState, workspaceState, infraState);
@@ -41,9 +44,8 @@ public void exec(WorkspaceState workspaceState, List changedPaths) {
private void init(SpoofaxPieState spoofaxPieState, WorkspaceState workspaceState, InfraState infraState) {
this.executor =
- new ObservingExecutorImpl(infraState.store, infraState.cache, ExecutionVariant.Naive, infraState.share,
- infraState.layer,
- infraState.logger, spoofaxPieState.logger, infraState.funcs);
+ new BottomUpObservingExecutorImpl(infraState.store, infraState.cache, variant, infraState.share,
+ infraState.layer, infraState.logger, spoofaxPieState.logger, infraState.funcs);
final PPath root = workspaceState.root;
try(final Stream stream = root.list(PPaths.directoryPathMatcher())) {
for(PPath project : (Iterable) stream.filter(
diff --git a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/PullingExecState.java b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/PullingExecState.java
index af9168c00..d1c081277 100644
--- a/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/PullingExecState.java
+++ b/runtime/benchmark/src/main/java/mb/spoofax/runtime/benchmark/state/PullingExecState.java
@@ -3,8 +3,8 @@
import mb.pie.runtime.core.ExecException;
import mb.pie.runtime.core.ExecInfo;
import mb.pie.runtime.core.FuncApp;
-import mb.pie.runtime.core.exec.PullingExec;
-import mb.pie.runtime.core.impl.exec.PullingExecImpl;
+import mb.pie.runtime.core.exec.TopDownExec;
+import mb.pie.runtime.core.impl.exec.TopDownExecImpl;
import mb.util.async.NullCancelled;
import mb.vfs.path.PPath;
import org.openjdk.jmh.annotations.Scope;
@@ -15,17 +15,17 @@
@State(Scope.Benchmark)
public class PullingExecState {
- public PullingExec exec;
+ public TopDownExec exec;
public void setup(InfraState infraState) {
this.exec =
- new PullingExecImpl(infraState.store, infraState.cache, infraState.share, infraState.layer.get(),
+ new TopDownExecImpl(infraState.store, infraState.cache, infraState.share, infraState.layer.get(),
infraState.logger.get(), infraState.funcs);
}
public void renew(InfraState infraState) {
this.exec =
- new PullingExecImpl(infraState.store, infraState.cache, infraState.share, infraState.layer.get(),
+ new TopDownExecImpl(infraState.store, infraState.cache, infraState.share, infraState.layer.get(),
infraState.logger.get(), infraState.funcs);
}
diff --git a/runtime/eclipse.externaldeps/pom.xml b/runtime/eclipse.externaldeps/pom.xml
index b81c1596e..407a772c0 100644
--- a/runtime/eclipse.externaldeps/pom.xml
+++ b/runtime/eclipse.externaldeps/pom.xml
@@ -19,11 +19,28 @@
org.metaborg
parent
- 2.4.0-SNAPSHOT
+ 2.5.0-SNAPSHOT
+
+
+ org.metaborg
+ pie.runtime.core
+ 0.1.0-SNAPSHOT
+
+
+ org.metaborg
+ pie.runtime.builtin
+ 0.1.0-SNAPSHOT
+
+
+ org.metaborg
+ spoofax.runtime.pie
+ 0.1.0-SNAPSHOT
+
+
org.jetbrains.kotlin
@@ -156,6 +173,9 @@
$(replace;${project.version};-SNAPSHOT;.${forceContextQualifier})
+ pie.runtime.core,
+ pie.runtime.builtin,
+ spoofax.runtime.pie,
kotlin-stdlib,
kotlin-stdlib-jdk8,
kotlin-stdlib-jdk7,
@@ -176,6 +196,8 @@
+ mb.pie.*,
+ mb.spoofax.runtime.pie.*,
kotlin.*;provider=metaborg;mandatory:=provider;version=0,
kotlinx.*;provider=metaborg;mandatory:=provider;version=0,
org.jetbrains.annotations.*;provider=metaborg;mandatory:=provider;version=0,
diff --git a/runtime/eclipse/META-INF/MANIFEST.MF b/runtime/eclipse/META-INF/MANIFEST.MF
index de8a78cbd..7b83f5f90 100644
--- a/runtime/eclipse/META-INF/MANIFEST.MF
+++ b/runtime/eclipse/META-INF/MANIFEST.MF
@@ -29,13 +29,10 @@ Require-Bundle: org.eclipse.core.runtime,
log,
vfs,
util,
- pie.runtime.core,
- pie.runtime.builtin,
spoofax.runtime.model,
spoofax.runtime.impl,
spoofax.runtime.impl.legacy,
- spoofax.runtime.eclipse.externaldeps,
- spoofax.runtime.pie
+ spoofax.runtime.eclipse.externaldeps
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-Vendor: metaborg.org
Bundle-ActivationPolicy: lazy
@@ -55,11 +52,8 @@ Eclipse-RegisterBuddy:
log,
vfs,
util,
- pie.runtime.core,
- pie.runtime.builtin,
spoofax.runtime.model,
spoofax.runtime.impl,
spoofax.runtime.impl.legacy,
- spoofax.runtime.eclipse.externaldeps,
- spoofax.runtime.pie
+ spoofax.runtime.eclipse.externaldeps
Import-Package: mb.util.async
diff --git a/runtime/eclipse/launch/Spoofax-PIE Eclipse plugin (mini).launch b/runtime/eclipse/launch/Spoofax-PIE Eclipse plugin (mini).launch
index 3e69c192f..19f3c7a12 100644
--- a/runtime/eclipse/launch/Spoofax-PIE Eclipse plugin (mini).launch
+++ b/runtime/eclipse/launch/Spoofax-PIE Eclipse plugin (mini).launch
@@ -27,8 +27,8 @@
-
-
+
+
diff --git a/runtime/eclipse/pom.xml b/runtime/eclipse/pom.xml
index 771cf7249..e59f67bdd 100644
--- a/runtime/eclipse/pom.xml
+++ b/runtime/eclipse/pom.xml
@@ -11,12 +11,12 @@
org.metaborg
parent.eclipse.plugin
- 2.4.0-SNAPSHOT
+ 2.5.0-SNAPSHOT
-
+
org.metaborg
@@ -37,6 +37,11 @@
spoofax.runtime.impl
0.1.0-SNAPSHOT
+ dependency>
+ org.metaborg
+ spoofax.runtime.pie
+ 0.1.0-SNAPSHOT
+
org.metaborg
diff --git a/runtime/eclipse/src/main/java/mb/spoofax/runtime/eclipse/pipeline/DirtyFlaggingPipelineAdapter.java b/runtime/eclipse/src/main/java/mb/spoofax/runtime/eclipse/pipeline/DirtyFlaggingPipelineAdapter.java
index 2e1676991..0d4559ced 100644
--- a/runtime/eclipse/src/main/java/mb/spoofax/runtime/eclipse/pipeline/DirtyFlaggingPipelineAdapter.java
+++ b/runtime/eclipse/src/main/java/mb/spoofax/runtime/eclipse/pipeline/DirtyFlaggingPipelineAdapter.java
@@ -18,7 +18,7 @@
import mb.log.Logger;
import mb.pie.runtime.core.ExecException;
import mb.pie.runtime.core.FuncApp;
-import mb.pie.runtime.core.exec.DirtyFlaggingExecutor;
+import mb.pie.runtime.core.exec.DirtyFlaggingTopDownExecutor;
import mb.pie.runtime.core.exec.ObsFuncApp;
import mb.spoofax.runtime.eclipse.SpoofaxPlugin;
import mb.spoofax.runtime.eclipse.editor.SpoofaxEditor;
@@ -41,7 +41,7 @@ public class DirtyFlaggingPipelineAdapter implements PipelineAdapter {
private final IWorkspaceRoot eclipseRoot;
private final PPath root;
- private final DirtyFlaggingExecutor executor;
+ private final DirtyFlaggingTopDownExecutor executor;
@Inject public DirtyFlaggingPipelineAdapter(PipelineObservers observers, PipelinePathChanges pathChanges,
@@ -57,7 +57,7 @@ public class DirtyFlaggingPipelineAdapter implements PipelineAdapter {
this.eclipseRoot = ResourcesPlugin.getWorkspace().getRoot();
this.root = pathSrv.resolve(eclipseRoot);
- this.executor = pieSrv.getDirtyFlaggingExecutor(root, SpoofaxPlugin.useInMemoryStore);
+ this.executor = pieSrv.getDirtyFlaggingTopDownExecutor(root, SpoofaxPlugin.useInMemoryStore);
}
diff --git a/runtime/eclipse/src/main/java/mb/spoofax/runtime/eclipse/pipeline/ObservingPipelineAdapter.java b/runtime/eclipse/src/main/java/mb/spoofax/runtime/eclipse/pipeline/ObservingPipelineAdapter.java
index 2ae2570d4..8a5e8b9a8 100644
--- a/runtime/eclipse/src/main/java/mb/spoofax/runtime/eclipse/pipeline/ObservingPipelineAdapter.java
+++ b/runtime/eclipse/src/main/java/mb/spoofax/runtime/eclipse/pipeline/ObservingPipelineAdapter.java
@@ -19,8 +19,8 @@
import mb.log.Logger;
import mb.pie.runtime.core.ExecException;
import mb.pie.runtime.core.FuncApp;
-import mb.pie.runtime.core.exec.ExecutionVariant;
-import mb.pie.runtime.core.exec.ObservingExecutor;
+import mb.pie.runtime.core.exec.BottomUpObservingExecutor;
+import mb.pie.runtime.core.exec.BottomUpObservingExecutorFactory;
import mb.spoofax.runtime.eclipse.SpoofaxPlugin;
import mb.spoofax.runtime.eclipse.editor.SpoofaxEditor;
import mb.spoofax.runtime.eclipse.util.Nullable;
@@ -43,7 +43,7 @@ public class ObservingPipelineAdapter implements PipelineAdapter {
private final IWorkspaceRoot eclipseRoot;
private final PPath root;
- private final ObservingExecutor executor;
+ private final BottomUpObservingExecutor executor;
@Inject public ObservingPipelineAdapter(PipelineObservers observers, PipelinePathChanges pathChanges, Logger logger,
@@ -59,7 +59,8 @@ public class ObservingPipelineAdapter implements PipelineAdapter {
this.eclipseRoot = ResourcesPlugin.getWorkspace().getRoot();
this.root = pathSrv.resolve(eclipseRoot);
- this.executor = pieSrv.getObservingExecutor(root, SpoofaxPlugin.useInMemoryStore, ExecutionVariant.DirtyFlagging);
+ this.executor = pieSrv.getBottomUpObservingExecutor(root, SpoofaxPlugin.useInMemoryStore,
+ BottomUpObservingExecutorFactory.Variant.DirtyFlagging);
}
diff --git a/runtime/pie/pom.xml b/runtime/pie/pom.xml
index d4efdbe35..b1d61f772 100644
--- a/runtime/pie/pom.xml
+++ b/runtime/pie/pom.xml
@@ -11,7 +11,7 @@
org.metaborg
parent.java
2.5.0-SNAPSHOT
-
+
@@ -190,5 +190,37 @@
+
+
+
+
+
+ org.eclipse.m2e
+ lifecycle-mapping
+ 1.0.0
+
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-plugin
+ [1.2.20,)
+
+ compile
+ test-compile
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/runtime/pie/src/main/kotlin/mb/spoofax/runtime/pie/Service.kt b/runtime/pie/src/main/kotlin/mb/spoofax/runtime/pie/Service.kt
index 2f582ef0b..2072f7bfe 100644
--- a/runtime/pie/src/main/kotlin/mb/spoofax/runtime/pie/Service.kt
+++ b/runtime/pie/src/main/kotlin/mb/spoofax/runtime/pie/Service.kt
@@ -5,6 +5,7 @@ import com.google.inject.Provider
import mb.pie.runtime.core.Cache
import mb.pie.runtime.core.Store
import mb.pie.runtime.core.exec.*
+import mb.pie.runtime.core.exec.BottomUpObservingExecutorFactory.Variant
import mb.pie.runtime.core.impl.store.InMemoryStore
import mb.pie.runtime.core.impl.store.LMDBBuildStoreFactory
import mb.vfs.path.PPath
@@ -13,47 +14,47 @@ import java.util.concurrent.ConcurrentHashMap
interface PieSrv {
- fun getPullingExecutor(dir: PPath, useInMemoryStore: Boolean): PullingExecutor
- fun getDirtyFlaggingExecutor(dir: PPath, useInMemoryStore: Boolean): DirtyFlaggingExecutor
- fun getObservingExecutor(dir: PPath, useInMemoryStore: Boolean, executionVariant: ExecutionVariant = ExecutionVariant.Naive): ObservingExecutor
+ fun getTopDownExecutor(dir: PPath, useInMemoryStore: Boolean): TopDownExecutor
+ fun getDirtyFlaggingTopDownExecutor(dir: PPath, useInMemoryStore: Boolean): DirtyFlaggingTopDownExecutor
+ fun getBottomUpObservingExecutor(dir: PPath, useInMemoryStore: Boolean, variant: Variant = Variant.Naive): BottomUpObservingExecutor
}
class PieSrvImpl @Inject constructor(
private val pathSrv: PathSrv,
private val storeFactory: LMDBBuildStoreFactory,
private val cacheFactory: Provider,
- private val pullingExecutorFactory: PullingExecutorFactory,
- private val dirtyFlaggingExecutorFactory: DirtyFlaggingExecutorFactory,
- private val observingExecutorFactory: ObservingExecutorFactory
+ private val topDownExecutorFactory: TopDownExecutorFactory,
+ private val dirtyFlaggingTopDownExecutorFactory: DirtyFlaggingTopDownExecutorFactory,
+ private val bottomUpObservingExecutorFactory: BottomUpObservingExecutorFactory
) : PieSrv {
private val stores = ConcurrentHashMap()
private val caches = ConcurrentHashMap()
- private val pullingExecutors = ConcurrentHashMap()
- private val dirtyFlaggingExecutors = ConcurrentHashMap()
- private val observingExecutors = ConcurrentHashMap()
+ private val pullingExecutors = ConcurrentHashMap()
+ private val dirtyFlaggingExecutors = ConcurrentHashMap()
+ private val observingExecutors = ConcurrentHashMap()
- override fun getPullingExecutor(dir: PPath, useInMemoryStore: Boolean): PullingExecutor {
+ override fun getTopDownExecutor(dir: PPath, useInMemoryStore: Boolean): TopDownExecutor {
return pullingExecutors.getOrPut(dir) {
val store = getStore(dir, useInMemoryStore)
val cache = getCache(dir)
- pullingExecutorFactory.create(store, cache)
+ topDownExecutorFactory.create(store, cache)
}
}
- override fun getDirtyFlaggingExecutor(dir: PPath, useInMemoryStore: Boolean): DirtyFlaggingExecutor {
+ override fun getDirtyFlaggingTopDownExecutor(dir: PPath, useInMemoryStore: Boolean): DirtyFlaggingTopDownExecutor {
return dirtyFlaggingExecutors.getOrPut(dir) {
val store = getStore(dir, useInMemoryStore)
val cache = getCache(dir)
- dirtyFlaggingExecutorFactory.create(store, cache)
+ dirtyFlaggingTopDownExecutorFactory.create(store, cache)
}
}
- override fun getObservingExecutor(dir: PPath, useInMemoryStore: Boolean, executionVariant: ExecutionVariant): ObservingExecutor {
+ override fun getBottomUpObservingExecutor(dir: PPath, useInMemoryStore: Boolean, variant: Variant): BottomUpObservingExecutor {
return observingExecutors.getOrPut(dir) {
val store = getStore(dir, useInMemoryStore)
val cache = getCache(dir)
- observingExecutorFactory.create(store, cache, executionVariant)
+ bottomUpObservingExecutorFactory.create(store, cache, variant)
}
}