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) } }