summaryrefslogtreecommitdiff
path: root/javalanglib/src/main/scala/java/lang/Runtime.scala
diff options
context:
space:
mode:
Diffstat (limited to 'javalanglib/src/main/scala/java/lang/Runtime.scala')
-rw-r--r--javalanglib/src/main/scala/java/lang/Runtime.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/javalanglib/src/main/scala/java/lang/Runtime.scala b/javalanglib/src/main/scala/java/lang/Runtime.scala
new file mode 100644
index 0000000..25aaa9f
--- /dev/null
+++ b/javalanglib/src/main/scala/java/lang/Runtime.scala
@@ -0,0 +1,47 @@
+package java.lang
+
+import scala.scalajs.js
+
+class Runtime private {
+ def exit(status: Int): Unit =
+ halt(status)
+
+ //def addShutdownHook(hook: Thread): Unit
+ //def removeShutdownHook(hook: Thread): Unit
+
+ def halt(status: Int): Unit = {
+ val envInfo = scala.scalajs.runtime.environmentInfo
+
+ if (js.typeOf(envInfo.exitFunction) == "function") {
+ envInfo.exitFunction(status)
+ throw new IllegalStateException("__ScalaJSEnv.exitFunction returned")
+ } else {
+ // We don't have an exit function. Fail
+ throw new SecurityException("Cannot terminate a JavaScript program. " +
+ "Define a JavaScript function `__ScalaJSEnv.exitFunction` to " +
+ "be called on exit.")
+ }
+ }
+
+ def availableProcessors(): Int = 1
+ //def freeMemory(): scala.Long
+ //def totalMemory(): scala.Long
+ //def maxMemory(): scala.Long
+
+ def gc(): Unit = {
+ // Ignore
+ }
+
+ //def runFinalization(): Unit
+ //def traceInstructions(on: scala.Boolean): Unit
+ //def traceMethodCalls(on: scala.Boolean): Unit
+
+ //def load(filename: String): Unit
+ //def loadLibrary(filename: String): Unit
+}
+
+object Runtime {
+ private val currentRuntime = new Runtime
+
+ def getRuntime() = currentRuntime
+}