diff --git a/js-assembler/assemble-perform-statement.rkt b/js-assembler/assemble-perform-statement.rkt index 956c611..61db922 100644 --- a/js-assembler/assemble-perform-statement.rkt +++ b/js-assembler/assemble-perform-statement.rkt @@ -79,7 +79,7 @@ ",")))] [(InstallClosureValues!? op) - "M.env.splice.apply(M.env,[M.env.length, 0].concat(M.proc.closedVals));"] + "M.env.push.apply(M.env,M.proc.closedVals);"] [(RestoreEnvironment!? op) "M.env=M.env[M.env.length-2].slice(0);"] diff --git a/js-assembler/runtime-src/baselib-functions.js b/js-assembler/runtime-src/baselib-functions.js index 9f659cb..0de0ed5 100644 --- a/js-assembler/runtime-src/baselib-functions.js +++ b/js-assembler/runtime-src/baselib-functions.js @@ -65,8 +65,7 @@ var i, returnArgs = [].slice.call(arguments, 1); // clear out stack space - // TODO: replace with a splice. - MACHINE.env.length = MACHINE.env.length - MACHINE.argcount; + MACHINE.env.length -= MACHINE.argcount; if (returnArgs.length === 1) { MACHINE.val = returnArgs[0]; @@ -77,10 +76,7 @@ } else { MACHINE.argcount = returnArgs.length; MACHINE.val = returnArgs.shift(); - // TODO: replace with a splice. - for (i = 0; i < MACHINE.argcount - 1; i++) { - MACHINE.env.push(returnArgs.pop()); - } + MACHINE.env.push.apply(MACHINE.env, returnArgs.reverse()); return MACHINE.control.pop().label.multipleValueReturn(MACHINE); } };