diff options
author | Robby <robby@santoslab.org> | 2018-03-19 10:13:03 -0500 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-03-19 08:13:03 -0700 |
commit | e7ac7323693edbdc350ec36b578ba3e101657360 (patch) | |
tree | 34851720f0698eea29b659693ee836b9ddcb9dad /main | |
parent | 27112151475e17845fa2675e2710cba77e9a0ede (diff) | |
download | mill-e7ac7323693edbdc350ec36b578ba3e101657360.tar.gz mill-e7ac7323693edbdc350ec36b578ba3e101657360.tar.bz2 mill-e7ac7323693edbdc350ec36b578ba3e101657360.zip |
Java 9 optimization by caching rt.jar (#239)
* Upgraded Ammonite to 1.0.5-7-f032887 that includes a Java 9 performance optimization for mill's client-server mode (lihaoyi/Ammonite#773).
* Java 9 optimization for interactive mode by caching rt.jar.
* Refactored based on @lihaoyi's comments on #239.
* Removed client side rt.jar caching.
* Propagatio of home path from Cli.
* Propagation, propagation, propagation!
Diffstat (limited to 'main')
-rw-r--r-- | main/src/mill/Main.scala | 6 | ||||
-rw-r--r-- | main/src/mill/main/MainRunner.scala | 1 | ||||
-rw-r--r-- | main/src/mill/main/ReplApplyHandler.scala | 5 | ||||
-rw-r--r-- | main/src/mill/main/RunScript.scala | 5 | ||||
-rw-r--r-- | main/src/mill/modules/Jvm.scala | 3 | ||||
-rw-r--r-- | main/test/src/mill/util/TestEvaluator.scala | 2 |
6 files changed, 15 insertions, 7 deletions
diff --git a/main/src/mill/Main.scala b/main/src/mill/Main.scala index 6c10f6f2..a899c8c6 100644 --- a/main/src/mill/Main.scala +++ b/main/src/mill/Main.scala @@ -59,7 +59,7 @@ object Main { val millArgSignature = Cli.genericSignature.filter(a => !removed(a.name)) :+ interactiveSignature - val millHome = home / ".mill" / "ammonite" + val millHome = mill.util.Ctx.defaultHome Cli.groupArgs( args.toList, @@ -88,12 +88,14 @@ object Main { stderr.println("Build repl needs to be run with the -i/--interactive flag") (false, stateCache) }else{ + val tqs = "\"\"\"" val config = if(!repl) cliConfig else cliConfig.copy( predefCode = - """import $file.build, build._ + s"""import $$file.build, build._ |implicit val replApplyHandler = mill.main.ReplApplyHandler( + | ammonite.ops.Path($tqs${cliConfig.home.toIO.getCanonicalPath.replaceAllLiterally("$", "$$")}$tqs), | interp.colors(), | repl.pprinter(), | build.millSelf.get, diff --git a/main/src/mill/main/MainRunner.scala b/main/src/mill/main/MainRunner.scala index ff7bcbbd..efebd5a5 100644 --- a/main/src/mill/main/MainRunner.scala +++ b/main/src/mill/main/MainRunner.scala @@ -62,6 +62,7 @@ class MainRunner(val config: ammonite.main.Cli.Config, printing = true, mainCfg => { val (result, interpWatched) = RunScript.runScript( + config.home, mainCfg.wd, scriptPath, mainCfg.instantiateInterpreter(), diff --git a/main/src/mill/main/ReplApplyHandler.scala b/main/src/mill/main/ReplApplyHandler.scala index a2b042ad..9ce30142 100644 --- a/main/src/mill/main/ReplApplyHandler.scala +++ b/main/src/mill/main/ReplApplyHandler.scala @@ -1,6 +1,7 @@ package mill.main +import ammonite.ops.Path import mill.define.Applicative.ApplyHandler import mill.define.Segment.Label import mill.define._ @@ -9,13 +10,15 @@ import mill.util.Strict.Agg import scala.collection.mutable object ReplApplyHandler{ - def apply[T](colors: ammonite.util.Colors, + def apply[T](home: Path, + colors: ammonite.util.Colors, pprinter0: pprint.PPrinter, rootModule: mill.define.BaseModule, discover: Discover[_]) = { new ReplApplyHandler( pprinter0, new Evaluator( + home, ammonite.ops.pwd / 'out, ammonite.ops.pwd / 'out, rootModule, diff --git a/main/src/mill/main/RunScript.scala b/main/src/mill/main/RunScript.scala index 553f5b69..4d8653fb 100644 --- a/main/src/mill/main/RunScript.scala +++ b/main/src/mill/main/RunScript.scala @@ -23,7 +23,8 @@ import scala.reflect.ClassTag * subsystem */ object RunScript{ - def runScript(wd: Path, + def runScript(home: Path, + wd: Path, path: Path, instantiateInterpreter: => Either[(Res.Failing, Seq[(Path, Long)]), ammonite.interp.Interpreter], scriptArgs: Seq[String], @@ -52,7 +53,7 @@ object RunScript{ val evalRes = for(s <- evalState) - yield new Evaluator[Any](wd / 'out, wd / 'out, s.rootModule, log, s.classLoaderSig, s.workerCache) + yield new Evaluator[Any](home, wd / 'out, wd / 'out, s.rootModule, log, s.classLoaderSig, s.workerCache) val evaluated = for{ evaluator <- evalRes diff --git a/main/src/mill/modules/Jvm.scala b/main/src/mill/modules/Jvm.scala index d71cf75c..2ded95db 100644 --- a/main/src/mill/modules/Jvm.scala +++ b/main/src/mill/modules/Jvm.scala @@ -101,7 +101,8 @@ object Jvm { def inprocess[T](classPath: Agg[Path], classLoaderOverrideSbtTesting: Boolean, - body: ClassLoader => T): T = { + body: ClassLoader => T) + (implicit ctx: Ctx.Home): T = { val cl = if (classLoaderOverrideSbtTesting) { val outerClassLoader = getClass.getClassLoader new URLClassLoader(classPath.map(_.toIO.toURI.toURL).toArray, mill.util.ClassLoader.create(Seq(), null)){ diff --git a/main/test/src/mill/util/TestEvaluator.scala b/main/test/src/mill/util/TestEvaluator.scala index 078254f1..ffff4b99 100644 --- a/main/test/src/mill/util/TestEvaluator.scala +++ b/main/test/src/mill/util/TestEvaluator.scala @@ -30,7 +30,7 @@ class TestEvaluator[T <: TestUtil.BaseModule](module: T) // true, // ammonite.util.Colors.Default, System.out, System.out, System.err, System.in // ) - val evaluator = new Evaluator(outPath, TestEvaluator.externalOutPath, module, logger) + val evaluator = new Evaluator(Ctx.defaultHome, outPath, TestEvaluator.externalOutPath, module, logger) def apply[T](t: Task[T]): Either[Result.Failing[T], (T, Int)] = { val evaluated = evaluator.evaluate(Agg(t)) |