summaryrefslogtreecommitdiff
path: root/scalaworker
diff options
context:
space:
mode:
authorRobby <robby@santoslab.org>2018-03-19 10:13:03 -0500
committerLi Haoyi <haoyi.sg@gmail.com>2018-03-19 08:13:03 -0700
commite7ac7323693edbdc350ec36b578ba3e101657360 (patch)
tree34851720f0698eea29b659693ee836b9ddcb9dad /scalaworker
parent27112151475e17845fa2675e2710cba77e9a0ede (diff)
downloadmill-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')
-rw-r--r--scalaworker/src/mill/scalaworker/ScalaWorker.scala32
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)