aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/sjs/JSPrimitives.scala
diff options
context:
space:
mode:
authorSébastien Doeraene <sjrdoeraene@gmail.com>2016-03-07 14:46:45 +0100
committerSébastien Doeraene <sjrdoeraene@gmail.com>2016-03-10 18:01:45 +0100
commitd0dd7001f0b59ed53f0778530328b3bf413587a2 (patch)
tree4a3ad96313026973543edcb7e3d2e15751580b0d /src/dotty/tools/backend/sjs/JSPrimitives.scala
parentc14c9c096d09d9e21f1fd4ec27e6b416db01512f (diff)
downloaddotty-d0dd7001f0b59ed53f0778530328b3bf413587a2.tar.gz
dotty-d0dd7001f0b59ed53f0778530328b3bf413587a2.tar.bz2
dotty-d0dd7001f0b59ed53f0778530328b3bf413587a2.zip
Implement most of the Scala.js IR code generator.
Notable things that are missing at this point: * Pattern matching * Try * Most of the JavaScript interop
Diffstat (limited to 'src/dotty/tools/backend/sjs/JSPrimitives.scala')
-rw-r--r--src/dotty/tools/backend/sjs/JSPrimitives.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/dotty/tools/backend/sjs/JSPrimitives.scala b/src/dotty/tools/backend/sjs/JSPrimitives.scala
index 47d705fe8..52b5dc4b9 100644
--- a/src/dotty/tools/backend/sjs/JSPrimitives.scala
+++ b/src/dotty/tools/backend/sjs/JSPrimitives.scala
@@ -37,10 +37,13 @@ object JSPrimitives {
final val ENV_INFO = 316 // runtime.environmentInfo
final val LINKING_INFO = 317 // runtime.linkingInfo
+ final val THROW = 318 // <special-ops>.throw
+
}
class JSPrimitives(ctx: Context) extends DottyPrimitives(ctx) {
import JSPrimitives._
+ import scala.tools.nsc.backend.ScalaPrimitives._
private lazy val jsPrimitives: Map[Symbol, Int] = initJSPrimitives(ctx)
@@ -77,6 +80,18 @@ class JSPrimitives(ctx: Context) extends DottyPrimitives(ctx) {
val jsdefn = JSDefinitions.jsdefn
+ // For some reason, the JVM primitive set does not register those
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newBooleanArray")), NEW_ZARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newByteArray")), NEW_BARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newShortArray")), NEW_SARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newCharArray")), NEW_CARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newIntArray")), NEW_IARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newLongArray")), NEW_LARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newFloatArray")), NEW_FARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newDoubleArray")), NEW_DARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newRefArray")), NEW_OARRAY)
+ addPrimitive(defn.DottyArraysModule.requiredMethod(Names.termName("newUnitArray")), NEW_OARRAY)
+
addPrimitive(defn.Any_getClass, GETCLASS)
for (i <- 0 to 22)
@@ -107,6 +122,8 @@ class JSPrimitives(ctx: Context) extends DottyPrimitives(ctx) {
//addPrimitive(jsdefn.Runtime_environmentInfo, ENV_INFO)
//addPrimitive(jsdefn.Runtime_linkingInfo, LINKING_INFO)
+ addPrimitive(defn.throwMethod, THROW)
+
primitives.toMap
}