summaryrefslogtreecommitdiff
path: root/scalajslib
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 /scalajslib
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 'scalajslib')
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSBridge.scala13
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala2
2 files changed, 10 insertions, 5 deletions
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)