aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/sjs/JSDefinitions.scala
diff options
context:
space:
mode:
authorSébastien Doeraene <sjrdoeraene@gmail.com>2016-02-29 12:48:06 +0100
committerSébastien Doeraene <sjrdoeraene@gmail.com>2016-03-01 15:47:56 +0100
commit18505cb2061235dba1b064b9379164e2a48254a6 (patch)
treea207c35b7610f2ecfa1b3b2d76c8d0041f596fe8 /src/dotty/tools/backend/sjs/JSDefinitions.scala
parentcd4004a82d9713bbb0b120aba83b3ed8fc9f1372 (diff)
downloaddotty-18505cb2061235dba1b064b9379164e2a48254a6.tar.gz
dotty-18505cb2061235dba1b064b9379164e2a48254a6.tar.bz2
dotty-18505cb2061235dba1b064b9379164e2a48254a6.zip
Store the JSDefinitions in a custom platform SJSPlatform.
This required the ability to instantiate a different `Platform` depending on settings, which, in turn, required to defer the initialization of `ContextBase.platform`.
Diffstat (limited to 'src/dotty/tools/backend/sjs/JSDefinitions.scala')
-rw-r--r--src/dotty/tools/backend/sjs/JSDefinitions.scala20
1 files changed, 5 insertions, 15 deletions
diff --git a/src/dotty/tools/backend/sjs/JSDefinitions.scala b/src/dotty/tools/backend/sjs/JSDefinitions.scala
index 1ee560b35..0f4415b31 100644
--- a/src/dotty/tools/backend/sjs/JSDefinitions.scala
+++ b/src/dotty/tools/backend/sjs/JSDefinitions.scala
@@ -8,22 +8,12 @@ import Symbols._
import StdNames._
import Decorators._
+import dotty.tools.dotc.config.SJSPlatform
+
object JSDefinitions {
- @dotty.tools.sharable
- private val cache = new java.util.WeakHashMap[ContextBase, JSDefinitions]
-
- // TODO Figure out where best to define this
- def jsdefn(implicit ctx: Context): JSDefinitions = cache.synchronized {
- val baseCtx = ctx.base
- val cached = cache.get(baseCtx)
- if (cached != null) {
- cached
- } else {
- val newJSDefinitions = new JSDefinitions()
- cache.put(baseCtx, newJSDefinitions)
- newJSDefinitions
- }
- }
+ /** The Scala.js-specific definitions for the current context. */
+ def jsdefn(implicit ctx: Context): JSDefinitions =
+ ctx.platform.asInstanceOf[SJSPlatform].jsDefinitions
}
final class JSDefinitions()(implicit ctx: Context) {