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 /scalaworker/src | |
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 'scalaworker/src')
-rw-r--r-- | scalaworker/src/mill/scalaworker/ScalaWorker.scala | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/scalaworker/src/mill/scalaworker/ScalaWorker.scala b/scalaworker/src/mill/scalaworker/ScalaWorker.scala index ca20ccf1..c74768a5 100644 --- a/scalaworker/src/mill/scalaworker/ScalaWorker.scala +++ b/scalaworker/src/mill/scalaworker/ScalaWorker.scala @@ -36,24 +36,28 @@ object ScalaWorker{ def main(args: Array[String]): Unit = { try{ - val (frameworks, classpath, testCp, arguments, outputPath, colored) = args match { - case Array(fs, cp, tcp, op, c) => (fs, cp, tcp, "", op, c) - case Array(fs, cp, tcp, as, op, c) => (fs, cp, tcp, as, op, c) + val (hm, frameworks, classpath, testCp, arguments, outputPath, colored) = args match { + case Array(h, fs, cp, tcp, op, c) => (h, fs, cp, tcp, "", op, c) + case Array(h, fs, cp, tcp, as, op, c) => (h, fs, cp, tcp, as, op, c) + } + val ctx = new Ctx.Log with Ctx.Home { + val log = PrintLogger( + colored == "true", + if(colored == "true") Colors.Default + else Colors.BlackWhite, + System.out, + System.err, + System.err, + System.in + ) + val home = Path(hm) } val result = new ScalaWorker(null, null).runTests( frameworkInstances = TestRunner.frameworks(frameworks.split(" ")), entireClasspath = Agg.from(classpath.split(" ").map(Path(_))), testClassfilePath = Agg.from(testCp.split(" ").map(Path(_))), args = arguments match{ case "" => Nil case x => x.split(" ").toList } - )(new PrintLogger( - colored == "true", - if(colored == "true") Colors.Default - else Colors.BlackWhite, - System.out, - System.err, - System.err, - System.in - )) + )(ctx) ammonite.ops.write(Path(outputPath), upickle.default.write(result)) }catch{case e: Throwable => @@ -89,7 +93,7 @@ class ScalaWorker(ctx0: mill.util.Ctx, .get val sourceFolder = mill.modules.Util.unpackZip(sourceJar)(workingDir) - val classloader = mill.util.ClassLoader.create(compilerJars.map(_.toURI.toURL), null) + val classloader = mill.util.ClassLoader.create(compilerJars.map(_.toURI.toURL), null)(ctx0) val scalacMain = classloader.loadClass("scala.tools.nsc.Main") val argsArray = Array[String]( "-d", compiledDest.toString, @@ -250,7 +254,7 @@ class ScalaWorker(ctx0: mill.util.Ctx, entireClasspath: Agg[Path], testClassfilePath: Agg[Path], args: Seq[String]) - (implicit ctx: mill.util.Ctx.Log): (String, Seq[Result]) = { + (implicit ctx: Ctx.Log with Ctx.Home): (String, Seq[Result]) = { Jvm.inprocess(entireClasspath, classLoaderOverrideSbtTesting = true, cl => { val frameworks = frameworkInstances(cl) |