on master help sign in
javascript: free memory in i$valstack properly
commitf7d97069f5d3732e63f3847c515a38d055eff740 authorraichoo <raichoo@googlemail.com> dateWed 12 Aug 2015, 00:57 (11 years ago) parentac7c313
3 files changed+6−2
jsrts/Runtime-common.js+1−1 src/IRTS/CodegenJavaScript.hs+1−1 src/IRTS/JavaScript/AST.hs+4
jsrts/Runtime-common.js+1−1
@@ -1,6 +1,6 @@
11/** @constructor */
22var i$VM = function() {
3− this.valstack = [];
3+ this.valstack = {};
44 this.valstack_top = 0;
55 this.valstack_base = 0;
66
src/IRTS/CodegenJavaScript.hs+1−1
@@ -596,7 +596,7 @@ jsBASETOP _ 0 = JSAssign jsSTACKBASE jsSTACKTOP
596596jsBASETOP _ n = JSAssign jsSTACKBASE (JSBinOp "+" jsSTACKTOP (JSNum (JSInt n)))
597597
598598jsNULL :: CompileInfo -> Reg -> JS
599−jsNULL _ r = JSAssign (translateReg r) JSNull
599+jsNULL _ r = JSDelete (translateReg r)
600600
601601jsERROR :: CompileInfo -> String -> JS
602602jsERROR _ = JSError
src/IRTS/JavaScript/AST.hs+4
@@ -76,6 +76,7 @@ data JS = JSRaw String
7676 | JSWhile JS JS
7777 | JSFFI String [JS]
7878 | JSAnnotation JSAnnotation JS
79+ | JSDelete JS
7980 | JSNoop
8081 deriving Eq
8182
@@ -129,6 +130,9 @@ compileJS' indent (JSAnnotation annotation js) =
129130 `T.append` " */\n"
130131 `T.append` compileJS' indent js
131132
133+compileJS' indent (JSDelete js) =
134+ "delete " `T.append` compileJS' 0 js
135+
132136compileJS' indent (JSFFI raw args) =
133137 ffi raw (map (T.unpack . compileJS' indent) args)
134138