From e7ac7323693edbdc350ec36b578ba3e101657360 Mon Sep 17 00:00:00 2001 From: Robby Date: Mon, 19 Mar 2018 10:13:03 -0500 Subject: 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! --- scalajslib/src/mill/scalajslib/ScalaJSBridge.scala | 13 +++++++++---- scalajslib/src/mill/scalajslib/ScalaJSModule.scala | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'scalajslib') diff --git a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala index 507d8af7..59ed6450 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala @@ -5,6 +5,7 @@ import java.net.URLClassLoader import ammonite.ops.Path import mill.define.Discover +import mill.util.Ctx import mill.{Agg, T} sealed trait OptimizeMode @@ -21,7 +22,8 @@ object ModuleKind{ class ScalaJSWorker { private var scalaInstanceCache = Option.empty[(Long, ScalaJSBridge)] - private def bridge(toolsClasspath: Agg[Path]) = { + private def bridge(toolsClasspath: Agg[Path]) + (implicit ctx: Ctx.Home) = { val classloaderSig = toolsClasspath.map(p => p.toString().hashCode + p.mtime.toMillis).sum scalaInstanceCache match { @@ -47,7 +49,8 @@ class ScalaJSWorker { dest: File, main: Option[String], fullOpt: Boolean, - moduleKind: ModuleKind): Unit = { + moduleKind: ModuleKind) + (implicit ctx: Ctx.Home): Unit = { bridge(toolsClasspath).link( sources.items.map(_.toIO).toArray, libraries.items.map(_.toIO).toArray, @@ -58,14 +61,16 @@ class ScalaJSWorker { ) } - def run(toolsClasspath: Agg[Path], config: NodeJSConfig, linkedFile: File): Unit = { + def run(toolsClasspath: Agg[Path], config: NodeJSConfig, linkedFile: File) + (implicit ctx: Ctx.Home): Unit = { bridge(toolsClasspath).run(config, linkedFile) } def getFramework(toolsClasspath: Agg[Path], config: NodeJSConfig, frameworkName: String, - linkedFile: File): (() => Unit, sbt.testing.Framework) = { + linkedFile: File) + (implicit ctx: Ctx.Home): (() => Unit, sbt.testing.Framework) = { bridge(toolsClasspath).getFramework(config, frameworkName, linkedFile) } diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala index 92c071c2..099b8bc2 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala @@ -117,7 +117,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => runClasspath: Agg[PathRef], mainClass: Option[String], mode: OptimizeMode, - moduleKind: ModuleKind)(implicit ctx: Ctx.Dest): PathRef = { + moduleKind: ModuleKind)(implicit ctx: Ctx): PathRef = { val outputPath = ctx.dest / "out.js" mkdir(ctx.dest) -- cgit v1.2.3