From c6c6061639636fc84355d6a63cbb026ca7224f50 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 28 Apr 2012 18:58:38 -0400 Subject: [PATCH] basis for a resident compiler unstable, but can be tested with -Dsbt.resident.limit=n n is the maximum Globals kept around --- .../src/main/java/xsbti/compile/CachedCompiler.java | 11 +++++++++++ .../java/xsbti/compile/CachedCompilerProvider.java | 10 ++++++++++ .../main/java/xsbti/compile/DependencyChanges.java | 13 +++++++++++++ .../src/main/java/xsbti/compile/GlobalsCache.java | 10 ++++++++++ interface/src/main/java/xsbti/compile/Setup.java | 2 ++ 5 files changed, 46 insertions(+) create mode 100644 interface/src/main/java/xsbti/compile/CachedCompiler.java create mode 100644 interface/src/main/java/xsbti/compile/CachedCompilerProvider.java create mode 100644 interface/src/main/java/xsbti/compile/DependencyChanges.java create mode 100644 interface/src/main/java/xsbti/compile/GlobalsCache.java diff --git a/interface/src/main/java/xsbti/compile/CachedCompiler.java b/interface/src/main/java/xsbti/compile/CachedCompiler.java new file mode 100644 index 000000000..2f97e395b --- /dev/null +++ b/interface/src/main/java/xsbti/compile/CachedCompiler.java @@ -0,0 +1,11 @@ +package xsbti.compile; + +import xsbti.AnalysisCallback; +import xsbti.Logger; +import xsbti.Reporter; +import java.io.File; + +public interface CachedCompiler +{ + public void run(File[] sources, DependencyChanges cpChanges, AnalysisCallback callback, Logger log, Reporter delegate); +} diff --git a/interface/src/main/java/xsbti/compile/CachedCompilerProvider.java b/interface/src/main/java/xsbti/compile/CachedCompilerProvider.java new file mode 100644 index 000000000..43d3aaf7e --- /dev/null +++ b/interface/src/main/java/xsbti/compile/CachedCompilerProvider.java @@ -0,0 +1,10 @@ +package xsbti.compile; + +import xsbti.Logger; +import xsbti.Reporter; + +public interface CachedCompilerProvider +{ + ScalaInstance scalaInstance(); + CachedCompiler newCachedCompiler(String[] arguments, Logger log, Reporter reporter); +} \ No newline at end of file diff --git a/interface/src/main/java/xsbti/compile/DependencyChanges.java b/interface/src/main/java/xsbti/compile/DependencyChanges.java new file mode 100644 index 000000000..4f6bda55a --- /dev/null +++ b/interface/src/main/java/xsbti/compile/DependencyChanges.java @@ -0,0 +1,13 @@ +package xsbti.compile; + + import java.io.File; + +// only includes changes to dependencies outside of the project +public interface DependencyChanges +{ + boolean isEmpty(); + // class files or jar files + File[] modifiedBinaries(); + // class names + String[] modifiedClasses(); +} \ No newline at end of file diff --git a/interface/src/main/java/xsbti/compile/GlobalsCache.java b/interface/src/main/java/xsbti/compile/GlobalsCache.java new file mode 100644 index 000000000..1e070a1f1 --- /dev/null +++ b/interface/src/main/java/xsbti/compile/GlobalsCache.java @@ -0,0 +1,10 @@ +package xsbti.compile; + +import xsbti.Logger; +import xsbti.Reporter; + +public interface GlobalsCache +{ + public CachedCompiler apply(String[] args, boolean forceNew, CachedCompilerProvider provider, Logger log, Reporter reporter); + public void clear(); +} diff --git a/interface/src/main/java/xsbti/compile/Setup.java b/interface/src/main/java/xsbti/compile/Setup.java index a1a9a1ad8..cf261aa7a 100644 --- a/interface/src/main/java/xsbti/compile/Setup.java +++ b/interface/src/main/java/xsbti/compile/Setup.java @@ -21,4 +21,6 @@ public interface Setup * This file can be removed to force a full recompilation. * The file should be unique and not shared between compilations. */ File cacheFile(); + + GlobalsCache cache(); }