diff --git a/js-assembler/package.rkt b/js-assembler/package.rkt index 3936fc4..cad2582 100644 --- a/js-assembler/package.rkt +++ b/js-assembler/package.rkt @@ -159,7 +159,7 @@ var modrec = M.modules[~s]; var exports = {}; modrec.isInvoked = true; - (function(MACHINE, RUNTIME, EXPORTS){~a})(M, plt.runtime, exports); + (function(MACHINE, EXPORTS){~a})(M, exports); ~a modrec.privateExports = exports; return M.control.pop().label(M);" diff --git a/js-assembler/runtime-src/baselib-primitives.js b/js-assembler/runtime-src/baselib-primitives.js index a9a918f..a2ced70 100644 --- a/js-assembler/runtime-src/baselib-primitives.js +++ b/js-assembler/runtime-src/baselib-primitives.js @@ -137,10 +137,10 @@ installPrimitiveProcedure( 'gensym', makeList(0, 1), - function(MACHINE) { + function(M) { var baseName = "g"; - if (MACHINE.argcount === 1) { - baseName = checkSymbolOrString(MACHINE, 'gensym', 0).toString(); + if (M.argcount === 1) { + baseName = checkSymbolOrString(M, 'gensym', 0).toString(); } gensymCounter++; return new baselib.symbols.Symbol(baseName + gensymCounter); @@ -150,13 +150,13 @@ installPrimitiveProcedure( 'display', makeList(1, 2), - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length - 1]; - var outputPort = MACHINE.params.currentOutputPort; - if (MACHINE.argcount === 2) { - outputPort = checkOutputPort(MACHINE, 'display', 1); + function (M) { + var firstArg = M.env[M.env.length - 1]; + var outputPort = M.params.currentOutputPort; + if (M.argcount === 2) { + outputPort = checkOutputPort(M, 'display', 1); } - outputPort.writeDomNode(MACHINE, toDomNode(firstArg, 'display')); + outputPort.writeDomNode(M, toDomNode(firstArg, 'display')); return VOID; }); @@ -164,39 +164,39 @@ installPrimitiveProcedure( 'write-byte', makeList(1, 2), - function (MACHINE) { - var firstArg = checkByte(MACHINE, 'write-byte', 0); - var outputPort = MACHINE.params.currentOutputPort; - if (MACHINE.argcount === 2) { - outputPort = checkOutputPort(MACHINE, 'display', 1); + function (M) { + var firstArg = checkByte(M, 'write-byte', 0); + var outputPort = M.params.currentOutputPort; + if (M.argcount === 2) { + outputPort = checkOutputPort(M, 'display', 1); } - outputPort.writeDomNode(MACHINE, toDomNode(String.fromCharCode(firstArg), 'display')); + outputPort.writeDomNode(M, toDomNode(String.fromCharCode(firstArg), 'display')); return VOID; }); installPrimitiveProcedure( 'newline', makeList(0, 1), - function (MACHINE) { - var outputPort = MACHINE.params.currentOutputPort; - if (MACHINE.argcount === 1) { - outputPort = checkOutputPort(MACHINE, 'newline', 1); + function (M) { + var outputPort = M.params.currentOutputPort; + if (M.argcount === 1) { + outputPort = checkOutputPort(M, 'newline', 1); } - outputPort.writeDomNode(MACHINE, toDomNode("\n", 'display')); + outputPort.writeDomNode(M, toDomNode("\n", 'display')); return VOID; }); installPrimitiveProcedure( 'displayln', makeList(1, 2), - function (MACHINE){ - var firstArg = MACHINE.env[MACHINE.env.length-1]; - var outputPort = MACHINE.params.currentOutputPort; - if (MACHINE.argcount === 2) { - outputPort = checkOutputPort(MACHINE, 'displayln', 1); + function (M){ + var firstArg = M.env[M.env.length-1]; + var outputPort = M.params.currentOutputPort; + if (M.argcount === 2) { + outputPort = checkOutputPort(M, 'displayln', 1); } - outputPort.writeDomNode(MACHINE, toDomNode(firstArg, 'display')); - outputPort.writeDomNode(MACHINE, toDomNode("\n", 'display')); + outputPort.writeDomNode(M, toDomNode(firstArg, 'display')); + outputPort.writeDomNode(M, toDomNode("\n", 'display')); return VOID; }); @@ -205,11 +205,11 @@ installPrimitiveProcedure( 'format', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { + function (M) { var args = [], i, formatString; - formatString = checkString(MACHINE, 'format', 0).toString(); - for(i = 1; i < MACHINE.argcount; i++) { - args.push(MACHINE.env[MACHINE.env.length - 1 - i]); + formatString = checkString(M, 'format', 0).toString(); + for(i = 1; i < M.argcount; i++) { + args.push(M.env[M.env.length - 1 - i]); } return baselib.format.format(formatString, args, 'format'); }); @@ -218,15 +218,15 @@ installPrimitiveProcedure( 'printf', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { + function (M) { var args = [], i, formatString, result, outputPort; - formatString = checkString(MACHINE, 'printf', 0).toString(); - for(i = 1; i < MACHINE.argcount; i++) { - args.push(MACHINE.env[MACHINE.env.length - 1 - i]); + formatString = checkString(M, 'printf', 0).toString(); + for(i = 1; i < M.argcount; i++) { + args.push(M.env[M.env.length - 1 - i]); } result = baselib.format.format(formatString, args, 'format'); - outputPort = MACHINE.params.currentOutputPort; - outputPort.writeDomNode(MACHINE, toDomNode(result, 'display')); + outputPort = M.params.currentOutputPort; + outputPort.writeDomNode(M, toDomNode(result, 'display')); return VOID; }); @@ -234,15 +234,15 @@ installPrimitiveProcedure( 'fprintf', baselib.arity.makeArityAtLeast(2), - function (MACHINE) { + function (M) { var args = [], i, formatString, outputPort, result; - outputPort = checkOutputPort(MACHINE, 'fprintf', 0); - formatString = checkString(MACHINE, 'fprintf', 1).toString(); - for(i = 2; i < MACHINE.argcount; i++) { - args.push(MACHINE.env[MACHINE.env.length - 1 - i]); + outputPort = checkOutputPort(M, 'fprintf', 0); + formatString = checkString(M, 'fprintf', 1).toString(); + for(i = 2; i < M.argcount; i++) { + args.push(M.env[M.env.length - 1 - i]); } result = baselib.format.format(formatString, args, 'format'); - outputPort.writeDomNode(MACHINE, toDomNode(result, 'display')); + outputPort.writeDomNode(M, toDomNode(result, 'display')); return VOID; }); @@ -254,13 +254,13 @@ installPrimitiveProcedure( 'current-print', makeList(0, 1), - function (MACHINE) { - if (MACHINE.argcount === 1) { - MACHINE.params['currentPrint'] = - checkProcedure(MACHINE, 'current-print', 0); + function (M) { + if (M.argcount === 1) { + M.params['currentPrint'] = + checkProcedure(M, 'current-print', 0); return VOID; } else { - return MACHINE.params['currentPrint']; + return M.params['currentPrint']; } }); @@ -268,13 +268,13 @@ installPrimitiveProcedure( 'current-output-port', makeList(0, 1), - function (MACHINE) { - if (MACHINE.argcount === 1) { - MACHINE.params['currentOutputPort'] = - checkOutputPort(MACHINE, 'current-output-port', 0); + function (M) { + if (M.argcount === 1) { + M.params['currentOutputPort'] = + checkOutputPort(M, 'current-output-port', 0); return VOID; } else { - return MACHINE.params['currentOutputPort']; + return M.params['currentOutputPort']; } }); @@ -283,13 +283,13 @@ installPrimitiveProcedure( 'current-error-port', makeList(0, 1), - function (MACHINE) { - if (MACHINE.argcount === 1) { - MACHINE.params['currentErrorPort'] = - checkOutputPort(MACHINE, 'current-output-port', 0); + function (M) { + if (M.argcount === 1) { + M.params['currentErrorPort'] = + checkOutputPort(M, 'current-output-port', 0); return VOID; } else { - return MACHINE.params['currentOutputPort']; + return M.params['currentOutputPort']; } }); @@ -302,11 +302,11 @@ installPrimitiveProcedure( '=', baselib.arity.makeArityAtLeast(2), - function (MACHINE) { + function (M) { var i; - var firstArg = checkNumber(MACHINE, '=', 0), secondArg; - for (i = 1; i < MACHINE.argcount; i++) { - secondArg = checkNumber(MACHINE, '=', i); + var firstArg = checkNumber(M, '=', 0), secondArg; + for (i = 1; i < M.argcount; i++) { + secondArg = checkNumber(M, '=', i); if (! (baselib.numbers.equals(firstArg, secondArg))) { return false; } @@ -319,10 +319,10 @@ installPrimitiveProcedure( '=~', 3, - function (MACHINE) { - var x = checkReal(MACHINE, '=~', 0); - var y = checkReal(MACHINE, '=~', 1); - var range = checkNonNegativeReal(MACHINE, '=~', 2); + function (M) { + var x = checkReal(M, '=~', 0); + var y = checkReal(M, '=~', 1); + var range = checkNonNegativeReal(M, '=~', 2); return baselib.numbers.lessThanOrEqual( baselib.numbers.abs(baselib.numbers.subtract(x, y)), range); @@ -331,10 +331,10 @@ var makeChainingBinop = function (predicate, name) { - return function (MACHINE) { - var firstArg = checkNumber(MACHINE, name, 0), secondArg, i; - for (i = 1; i < MACHINE.argcount; i++) { - secondArg = checkNumber(MACHINE, name, i); + return function (M) { + var firstArg = checkNumber(M, name, 0), secondArg, i; + for (i = 1; i < M.argcount; i++) { + secondArg = checkNumber(M, name, i); if (! (predicate(firstArg, secondArg))) { return false; } @@ -371,13 +371,13 @@ installPrimitiveProcedure( '+', baselib.arity.makeArityAtLeast(0), - function (MACHINE) { + function (M) { var result = 0; var i = 0; - for (i = 0; i < MACHINE.argcount; i++) { + for (i = 0; i < M.argcount; i++) { result = baselib.numbers.add( result, - checkNumber(MACHINE, '+', i)); + checkNumber(M, '+', i)); } return result; }); @@ -386,13 +386,13 @@ installPrimitiveProcedure( '*', baselib.arity.makeArityAtLeast(0), - function (MACHINE) { + function (M) { var result = 1; var i = 0; - for (i=0; i < MACHINE.argcount; i++) { + for (i=0; i < M.argcount; i++) { result = baselib.numbers.multiply( result, - checkNumber(MACHINE, '*', i)); + checkNumber(M, '*', i)); } return result; }); @@ -400,17 +400,17 @@ installPrimitiveProcedure( '-', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - if (MACHINE.argcount === 1) { + function (M) { + if (M.argcount === 1) { return baselib.numbers.subtract( 0, - checkNumber(MACHINE, '-', 0)); + checkNumber(M, '-', 0)); } - var result = checkNumber(MACHINE, '-', 0), i; - for (i = 1; i < MACHINE.argcount; i++) { + var result = checkNumber(M, '-', 0), i; + for (i = 1; i < M.argcount; i++) { result = baselib.numbers.subtract( result, - checkNumber(MACHINE, '-', i)); + checkNumber(M, '-', i)); } return result; }); @@ -418,12 +418,12 @@ installPrimitiveProcedure( '/', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var result = checkNumber(MACHINE, '/', 0), i; - for (i = 1; i < MACHINE.argcount; i++) { + function (M) { + var result = checkNumber(M, '/', 0), i; + for (i = 1; i < M.argcount; i++) { result = baselib.numbers.divide( result, - checkNumber(MACHINE, '/', i)); + checkNumber(M, '/', i)); } return result; }); @@ -432,8 +432,8 @@ installPrimitiveProcedure( 'add1', 1, - function (MACHINE) { - var firstArg = checkNumber(MACHINE, 'add1', 0); + function (M) { + var firstArg = checkNumber(M, 'add1', 0); return baselib.numbers.add(firstArg, 1); }); @@ -441,8 +441,8 @@ installPrimitiveProcedure( 'sub1', 1, - function (MACHINE) { - var firstArg = checkNumber(MACHINE, 'sub1', 0); + function (M) { + var firstArg = checkNumber(M, 'sub1', 0); return baselib.numbers.subtract(firstArg, 1); }); @@ -450,8 +450,8 @@ installPrimitiveProcedure( 'zero?', 1, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; + function (M) { + var firstArg = M.env[M.env.length-1]; return baselib.numbers.equals(firstArg, 0); }); @@ -459,9 +459,9 @@ installPrimitiveProcedure( 'cons', 2, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; - var secondArg = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var firstArg = M.env[M.env.length-1]; + var secondArg = M.env[M.env.length-2]; return makePair(firstArg, secondArg); }); @@ -469,10 +469,10 @@ installPrimitiveProcedure( 'list', baselib.arity.makeArityAtLeast(0), - function (MACHINE) { + function (M) { var result = NULL, i; - for (i = 0; i < MACHINE.argcount; i++) { - result = makePair(MACHINE.env[MACHINE.env.length - (MACHINE.argcount - i)], + for (i = 0; i < M.argcount; i++) { + result = makePair(M.env[M.env.length - (M.argcount - i)], result); } return result; @@ -481,10 +481,10 @@ installPrimitiveProcedure( 'list*', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var result = checkList(MACHINE, 'list*', MACHINE.argcount - 1), i; - for (i = MACHINE.argcount - 2; i >= 0; i--) { - result = makePair(MACHINE.env[MACHINE.env.length - 1 - i], + function (M) { + var result = checkList(M, 'list*', M.argcount - 1), i; + for (i = M.argcount - 2; i >= 0; i--) { + result = makePair(M.env[M.env.length - 1 - i], result); } return result; @@ -494,9 +494,9 @@ installPrimitiveProcedure( 'list-ref', 2, - function (MACHINE) { - var lst = checkList(MACHINE, 'list-ref', 0); - var index = checkNaturalInRange(MACHINE, 'list-ref', 1, + function (M) { + var lst = checkList(M, 'list-ref', 0); + var index = checkNaturalInRange(M, 'list-ref', 1, 0, baselib.lists.length(lst)); return baselib.lists.listRef(lst, baselib.numbers.toFixnum(index)); }); @@ -507,24 +507,24 @@ installPrimitiveProcedure( 'car', 1, - function (MACHINE) { - var firstArg = checkPair(MACHINE, 'car', 0); + function (M) { + var firstArg = checkPair(M, 'car', 0); return firstArg.first; }); installPrimitiveProcedure( 'cdr', 1, - function (MACHINE) { - var firstArg = checkPair(MACHINE, 'cdr', 0); + function (M) { + var firstArg = checkPair(M, 'cdr', 0); return firstArg.rest; }); installPrimitiveProcedure( 'pair?', 1, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; + function (M) { + var firstArg = M.env[M.env.length-1]; return isPair(firstArg); }); @@ -532,17 +532,17 @@ installPrimitiveProcedure( 'list?', 1, - function (MACHINE) { - return isList(MACHINE.env[MACHINE.env.length -1]); + function (M) { + return isList(M.env[M.env.length -1]); }); installPrimitiveProcedure( 'set-car!', 2, - function (MACHINE) { - var firstArg = checkPair(MACHINE, 'set-car!', 0); - var secondArg = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var firstArg = checkPair(M, 'set-car!', 0); + var secondArg = M.env[M.env.length-2]; firstArg.first = secondArg; return VOID; }); @@ -551,9 +551,9 @@ installPrimitiveProcedure( 'set-cdr!', 2, - function (MACHINE) { - var firstArg = checkPair(MACHINE, 'set-car!', 0); - var secondArg = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var firstArg = checkPair(M, 'set-car!', 0); + var secondArg = M.env[M.env.length-2]; firstArg.rest = secondArg; return VOID; }); @@ -562,8 +562,8 @@ installPrimitiveProcedure( 'not', 1, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; + function (M) { + var firstArg = M.env[M.env.length-1]; return (firstArg === false); }); @@ -571,8 +571,8 @@ installPrimitiveProcedure( 'null?', 1, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; + function (M) { + var firstArg = M.env[M.env.length-1]; return firstArg === NULL; }); @@ -580,11 +580,11 @@ installPrimitiveProcedure( 'vector', baselib.arity.makeArityAtLeast(0), - function (MACHINE) { + function (M) { var i; var result = []; - for (i = 0; i < MACHINE.argcount; i++) { - result.push(MACHINE.env[MACHINE.env.length-1-i]); + for (i = 0; i < M.argcount; i++) { + result.push(M.env[M.env.length-1-i]); } var newVector = makeVector.apply(null, result); return newVector; @@ -594,12 +594,12 @@ installPrimitiveProcedure( 'make-vector', makeList(1, 2), - function (MACHINE) { + function (M) { var value = 0; var length = baselib.numbers.toFixnum( - checkNatural(MACHINE, 'make-vector', 0)); - if (MACHINE.argcount === 2) { - value = MACHINE.env[MACHINE.env.length - 2]; + checkNatural(M, 'make-vector', 0)); + if (M.argcount === 2) { + value = M.env[M.env.length - 2]; } var arr = []; var i; @@ -613,8 +613,8 @@ installPrimitiveProcedure( 'vector->list', 1, - function (MACHINE) { - var elts = checkVector(MACHINE, 'vector->list', 0).elts; + function (M) { + var elts = checkVector(M, 'vector->list', 0).elts; var i; var result = NULL; for (i = 0; i < elts.length; i++) { @@ -627,8 +627,8 @@ installPrimitiveProcedure( 'list->vector', 1, - function (MACHINE) { - var firstArg = checkList(MACHINE, 'list->vector', 0); + function (M) { + var firstArg = checkList(M, 'list->vector', 0); var result = []; while (firstArg !== NULL) { result.push(firstArg.first); @@ -641,9 +641,9 @@ installPrimitiveProcedure( 'vector-ref', 2, - function (MACHINE) { - var elts = checkVector(MACHINE, 'vector-ref', 0).elts; - var index = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var elts = checkVector(M, 'vector-ref', 0).elts; + var index = M.env[M.env.length-2]; return elts[index]; }); @@ -651,13 +651,13 @@ installPrimitiveProcedure( 'vector-set!', 3, - function (MACHINE) { - var elts = checkVector(MACHINE, 'vector-set!', 0).elts; + function (M) { + var elts = checkVector(M, 'vector-set!', 0).elts; // FIXME: check out-of-bounds vector var index = baselib.numbers.toFixnum( - checkNaturalInRange(MACHINE, 'vector-set!', 1, + checkNaturalInRange(M, 'vector-set!', 1, 0, elts.length)); - var val = MACHINE.env[MACHINE.env.length - 1 - 2]; + var val = M.env[M.env.length - 1 - 2]; elts[index] = val; return VOID; }); @@ -666,8 +666,8 @@ installPrimitiveProcedure( 'vector-length', 1, - function (MACHINE) { - return checkVector(MACHINE, 'vector-length', 0).elts.length; + function (M) { + return checkVector(M, 'vector-length', 0).elts.length; }); @@ -675,12 +675,12 @@ installPrimitiveProcedure( 'make-string', makeList(1, 2), - function (MACHINE) { + function (M) { var value = String.fromCharCode(0); var length = baselib.numbers.toFixnum( - checkNatural(MACHINE, 'make-string', 0)); - if (MACHINE.argcount === 2) { - value = checkChar(MACHINE, 'make-string', 1).val; + checkNatural(M, 'make-string', 0)); + if (M.argcount === 2) { + value = checkChar(M, 'make-string', 1).val; } var arr = []; var i; @@ -693,12 +693,12 @@ installPrimitiveProcedure( 'substring', makeList(2, 3), - function(MACHINE) { - var str = String(checkString(MACHINE, 'substring', 0)); - var start = baselib.numbers.toFixnum(checkNatural(MACHINE, 'substring', 1)); + function(M) { + var str = String(checkString(M, 'substring', 0)); + var start = baselib.numbers.toFixnum(checkNatural(M, 'substring', 1)); var end = str.length; - if (MACHINE.argcount === 3) { - end = baselib.numbers.toFixnum(checkNatural(MACHINE, 'substring', 2)); + if (M.argcount === 3) { + end = baselib.numbers.toFixnum(checkNatural(M, 'substring', 2)); } return str.substring(start, end); }); @@ -707,8 +707,8 @@ installPrimitiveProcedure( 'list->string', 1, - function (MACHINE) { - var firstArg = checkListofChars(MACHINE, 'list->string', 0); + function (M) { + var firstArg = checkListofChars(M, 'list->string', 0); var result = []; while (firstArg !== NULL) { result.push(firstArg.first.val); @@ -721,11 +721,11 @@ installPrimitiveProcedure( 'string', baselib.arity.makeArityAtLeast(0), - function (MACHINE) { + function (M) { var i; var chars = []; - for (i = 0; i < MACHINE.argcount; i++) { - chars.push(checkChar(MACHINE, 'string', i).val); + for (i = 0; i < M.argcount; i++) { + chars.push(checkChar(M, 'string', i).val); } return chars.join(''); }); @@ -734,8 +734,8 @@ installPrimitiveProcedure( 'string->list', 1, - function (MACHINE) { - var str = checkString(MACHINE, 'string->list', 0).toString(); + function (M) { + var str = checkString(M, 'string->list', 0).toString(); var i; var result = NULL; for (i = str.length - 1; i >= 0; i--) { @@ -749,10 +749,10 @@ installPrimitiveProcedure( 'string-set!', 3, - function (MACHINE) { - var str = checkMutableString(MACHINE, 'string-set!', 0); - var k = checkNatural(MACHINE, 'string-set!', 1); - var ch = checkChar(MACHINE, 'string-set!', 2); + function (M) { + var str = checkMutableString(M, 'string-set!', 0); + var k = checkNatural(M, 'string-set!', 1); + var ch = checkChar(M, 'string-set!', 2); str.set(baselib.numbers.toFixnum(k), ch.val); return VOID; }); @@ -764,16 +764,16 @@ installPrimitiveProcedure( 'symbol?', 1, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; + function (M) { + var firstArg = M.env[M.env.length-1]; return isSymbol(firstArg); }); installPrimitiveProcedure( 'symbol->string', 1, - function (MACHINE) { - var firstArg = checkSymbol(MACHINE, 'symbol->string', 0); + function (M) { + var firstArg = checkSymbol(M, 'symbol->string', 0); return firstArg.toString(); }); @@ -781,11 +781,11 @@ installPrimitiveProcedure( 'string=?', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var s = checkString(MACHINE, 'string=?', 0).toString(); + function (M) { + var s = checkString(M, 'string=?', 0).toString(); var i; - for (i = 1; i < MACHINE.argcount; i++) { - if (s !== checkString(MACHINE, 'string=?', i).toString()) { + for (i = 1; i < M.argcount; i++) { + if (s !== checkString(M, 'string=?', i).toString()) { return false; } } @@ -796,11 +796,11 @@ installPrimitiveProcedure( 'string<=?', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var s = checkString(MACHINE, 'string<=?', 0).toString(); + function (M) { + var s = checkString(M, 'string<=?', 0).toString(); var i; - for (i = 1; i < MACHINE.argcount; i++) { - if ((s <= checkString(MACHINE, 'string<=?', i).toString()) === false) { + for (i = 1; i < M.argcount; i++) { + if ((s <= checkString(M, 'string<=?', i).toString()) === false) { return false; } } @@ -810,11 +810,11 @@ installPrimitiveProcedure( 'string=?', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var s = checkString(MACHINE, 'string>=?', 0).toString(); + function (M) { + var s = checkString(M, 'string>=?', 0).toString(); var i; - for (i = 1; i < MACHINE.argcount; i++) { - if ((s >= checkString(MACHINE, 'string>=?', i).toString()) === false) { + for (i = 1; i < M.argcount; i++) { + if ((s >= checkString(M, 'string>=?', i).toString()) === false) { return false; } } @@ -838,11 +838,11 @@ installPrimitiveProcedure( 'string>?', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var s = checkString(MACHINE, 'string>?', 0).toString(); + function (M) { + var s = checkString(M, 'string>?', 0).toString(); var i; - for (i = 1; i < MACHINE.argcount; i++) { - if ((s > checkString(MACHINE, 'string>?', i).toString()) === false) { + for (i = 1; i < M.argcount; i++) { + if ((s > checkString(M, 'string>?', i).toString()) === false) { return false; } } @@ -869,11 +869,11 @@ installPrimitiveProcedure( 'string-ci=?', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var s = checkString(MACHINE, 'string-ci=?', 0).toString().toUpperCase(); + function (M) { + var s = checkString(M, 'string-ci=?', 0).toString().toUpperCase(); var i; - for (i = 1; i < MACHINE.argcount; i++) { - if (s !== checkString(MACHINE, 'string-ci=?', i).toString().toUpperCase()) { + for (i = 1; i < M.argcount; i++) { + if (s !== checkString(M, 'string-ci=?', i).toString().toUpperCase()) { return false; } } @@ -884,11 +884,11 @@ installPrimitiveProcedure( 'string-ci<=?', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var s = checkString(MACHINE, 'string-ci<=?', 0).toString().toUpperCase(); + function (M) { + var s = checkString(M, 'string-ci<=?', 0).toString().toUpperCase(); var i; - for (i = 1; i < MACHINE.argcount; i++) { - if ((s <= checkString(MACHINE, 'string-ci<=?', i).toString().toUpperCase()) === false) { + for (i = 1; i < M.argcount; i++) { + if ((s <= checkString(M, 'string-ci<=?', i).toString().toUpperCase()) === false) { return false; } } @@ -898,11 +898,11 @@ installPrimitiveProcedure( 'string-ci=?', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var s = checkString(MACHINE, 'string-ci>=?', 0).toString().toUpperCase(); + function (M) { + var s = checkString(M, 'string-ci>=?', 0).toString().toUpperCase(); var i; - for (i = 1; i < MACHINE.argcount; i++) { - if ((s >= checkString(MACHINE, 'string-ci>=?', i).toString().toUpperCase()) === false) { + for (i = 1; i < M.argcount; i++) { + if ((s >= checkString(M, 'string-ci>=?', i).toString().toUpperCase()) === false) { return false; } } @@ -926,11 +926,11 @@ installPrimitiveProcedure( 'string-ci>?', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { - var s = checkString(MACHINE, 'string-ci>?', 0).toString().toUpperCase(); + function (M) { + var s = checkString(M, 'string-ci>?', 0).toString().toUpperCase(); var i; - for (i = 1; i < MACHINE.argcount; i++) { - if ((s > checkString(MACHINE, 'string-ci>?', i).toString().toUpperCase()) === false) { + for (i = 1; i < M.argcount; i++) { + if ((s > checkString(M, 'string-ci>?', i).toString().toUpperCase()) === false) { return false; } } @@ -944,11 +944,11 @@ installPrimitiveProcedure( 'string-append', baselib.arity.makeArityAtLeast(0), - function (MACHINE) { + function (M) { var buffer = []; var i; - for (i = 0; i < MACHINE.argcount; i++) { - buffer.push(checkString(MACHINE, 'string-append', i).toString()); + for (i = 0; i < M.argcount; i++) { + buffer.push(checkString(M, 'string-append', i).toString()); } return buffer.join(''); }); @@ -956,8 +956,8 @@ installPrimitiveProcedure( 'string-length', 1, - function (MACHINE) { - var firstArg = checkString(MACHINE, 'string-length', 0).toString(); + function (M) { + var firstArg = checkString(M, 'string-length', 0).toString(); return firstArg.length; }); @@ -965,10 +965,10 @@ installPrimitiveProcedure( 'string-ref', 2, - function (MACHINE) { - var firstArg = checkString(MACHINE, 'string-ref', 0).toString(); + function (M) { + var firstArg = checkString(M, 'string-ref', 0).toString(); var index = baselib.numbers.toFixnum( - checkNaturalInRange(MACHINE, 'string-ref', 1, + checkNaturalInRange(M, 'string-ref', 1, 0, firstArg.length)); return baselib.chars.makeChar(firstArg[index]); }); @@ -978,41 +978,41 @@ installPrimitiveProcedure( 'string?', 1, - function (MACHINE) { - return isString(MACHINE.env[MACHINE.env.length - 1]); + function (M) { + return isString(M.env[M.env.length - 1]); }); installPrimitiveProcedure( 'number->string', 1, - function (MACHINE) { - return checkNumber(MACHINE, 'number->string', 0).toString(); + function (M) { + return checkNumber(M, 'number->string', 0).toString(); }); installPrimitiveProcedure( 'string->symbol', 1, - function (MACHINE) { - return makeSymbol(checkString(MACHINE, 'string->symbol', 0).toString()); + function (M) { + return makeSymbol(checkString(M, 'string->symbol', 0).toString()); }); installPrimitiveProcedure( 'string->number', 1, - function (MACHINE) { + function (M) { return baselib.numbers.fromString( - checkString(MACHINE, 'string->number', 0).toString()); + checkString(M, 'string->number', 0).toString()); }); installPrimitiveProcedure( 'boolean?', 1, - function(MACHINE) { - var v = MACHINE.env[MACHINE.env.length - 1]; + function(M) { + var v = M.env[M.env.length - 1]; return (v === true || v === false); }); @@ -1020,19 +1020,19 @@ installPrimitiveProcedure( 'char?', 1, - function(MACHINE) { - return baselib.chars.isChar(MACHINE.env[MACHINE.env.length -1 ]); + function(M) { + return baselib.chars.isChar(M.env[M.env.length -1 ]); }); installPrimitiveProcedure( 'char=?', baselib.arity.makeArityAtLeast(2), - function(MACHINE) { - var s = checkChar(MACHINE, 'char=?', 0).val; + function(M) { + var s = checkChar(M, 'char=?', 0).val; var i; - for (i = 1; i < MACHINE.argcount; i++) { - if (checkChar(MACHINE, 'char=?', i).val !== s) { + for (i = 1; i < M.argcount; i++) { + if (checkChar(M, 'char=?', i).val !== s) { return false; } } @@ -1043,16 +1043,16 @@ installPrimitiveProcedure( 'char-upcase', 1, - function(MACHINE) { - var ch = checkChar(MACHINE, 'char=?', 0).val; + function(M) { + var ch = checkChar(M, 'char=?', 0).val; return baselib.chars.makeChar(ch.toUpperCase()); }); installPrimitiveProcedure( 'char-downcase', 1, - function(MACHINE) { - var ch = checkChar(MACHINE, 'char=?', 0).val; + function(M) { + var ch = checkChar(M, 'char=?', 0).val; return baselib.chars.makeChar(ch.toLowerCase()); }); @@ -1063,25 +1063,25 @@ installPrimitiveProcedure( 'box', 1, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; + function (M) { + var firstArg = M.env[M.env.length-1]; return makeBox(firstArg); }); installPrimitiveProcedure( 'unbox', 1, - function (MACHINE) { - var firstArg = checkBox(MACHINE, 'unbox', 0); + function (M) { + var firstArg = checkBox(M, 'unbox', 0); return firstArg.ref(); }); installPrimitiveProcedure( 'set-box!', 2, - function (MACHINE) { - var firstArg = checkMutableBox(MACHINE, 'set-box!', 0); - var secondArg = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var firstArg = checkMutableBox(M, 'set-box!', 0); + var secondArg = M.env[M.env.length-2]; firstArg.set(secondArg); return VOID; }); @@ -1089,7 +1089,7 @@ installPrimitiveProcedure( 'void', baselib.arity.makeArityAtLeast(0), - function (MACHINE) { + function (M) { return VOID; }); @@ -1097,11 +1097,11 @@ installPrimitiveProcedure( 'random', baselib.lists.makeList(0, 1), - function (MACHINE) { - if (MACHINE.argcount === 0) { + function (M) { + if (M.argcount === 0) { return makeFloat(Math.random()); } else { - var n = checkNatural(MACHINE, 'random', 0); + var n = checkNatural(M, 'random', 0); return Math.floor(Math.random() * baselib.numbers.toFixnum(n)); } }); @@ -1110,18 +1110,18 @@ installPrimitiveProcedure( 'eq?', 2, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; - var secondArg = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var firstArg = M.env[M.env.length-1]; + var secondArg = M.env[M.env.length-2]; return firstArg === secondArg; }); installPrimitiveProcedure( 'eqv?', 2, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; - var secondArg = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var firstArg = M.env[M.env.length-1]; + var secondArg = M.env[M.env.length-2]; return baselib.equality.eqv(firstArg, secondArg); }); @@ -1130,9 +1130,9 @@ installPrimitiveProcedure( 'equal?', 2, - function (MACHINE) { - var firstArg = MACHINE.env[MACHINE.env.length-1]; - var secondArg = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var firstArg = M.env[M.env.length-1]; + var secondArg = M.env[M.env.length-2]; return equals(firstArg, secondArg); }); @@ -1140,24 +1140,24 @@ // This definition of apply will take precedence over the // implementation of apply in the boostrapped-primitives.rkt, // since it provides nicer error handling. - var applyImplementation = function (MACHINE) { - if(--MACHINE.callsBeforeTrampoline < 0) { + var applyImplementation = function (M) { + if(--M.callsBeforeTrampoline < 0) { throw applyImplementation; } - var proc = checkProcedure(MACHINE, 'apply', 0); - MACHINE.env.pop(); - MACHINE.argcount--; - checkList(MACHINE, 'apply', MACHINE.argcount - 1); - MACHINE.spliceListIntoStack(MACHINE.argcount - 1); - if (baselib.arity.isArityMatching(proc.racketArity, MACHINE.argcount)) { - MACHINE.proc = proc; + var proc = checkProcedure(M, 'apply', 0); + M.env.pop(); + M.argcount--; + checkList(M, 'apply', M.argcount - 1); + M.spliceListIntoStack(M.argcount - 1); + if (baselib.arity.isArityMatching(proc.racketArity, M.argcount)) { + M.proc = proc; if (baselib.functions.isPrimitiveProcedure(proc)) { - return finalizeClosureCall(MACHINE, proc(MACHINE)); + return finalizeClosureCall(M, proc(M)); } else { - return proc.label(MACHINE); + return proc.label(M); } } else { - raiseArityMismatchError(MACHINE, proc, MACHINE.argcount); + raiseArityMismatchError(M, proc, M.argcount); } }; installPrimitiveClosure( @@ -1177,24 +1177,24 @@ installPrimitiveProcedure( 'procedure?', 1, - function (MACHINE) { - return baselib.functions.isProcedure(MACHINE.env[MACHINE.env.length - 1]); + function (M) { + return baselib.functions.isProcedure(M.env[M.env.length - 1]); }); installPrimitiveProcedure( 'procedure-arity-includes?', 2, - function (MACHINE) { - var proc = checkProcedure(MACHINE, 'procedure-arity-includes?', 0); - var argcount = checkNatural(MACHINE, 'procedure-arity-includes?', 1); + function (M) { + var proc = checkProcedure(M, 'procedure-arity-includes?', 0); + var argcount = checkNatural(M, 'procedure-arity-includes?', 1); return baselib.arity.isArityMatching(proc.racketArity, argcount); }); installPrimitiveProcedure( 'procedure-arity', 1, - function (MACHINE) { - var proc = checkProcedure(MACHINE, 'procedure-arity-includes?', 0); + function (M) { + var proc = checkProcedure(M, 'procedure-arity-includes?', 0); return proc.racketArity; }); @@ -1202,9 +1202,9 @@ installPrimitiveProcedure( 'procedure-rename', 2, - function (MACHINE) { - var proc = checkProcedure(MACHINE, 'procedure-rename', 0); - var name = checkSymbol(MACHINE, 'procedure-rename', 1); + function (M) { + var proc = checkProcedure(M, 'procedure-rename', 0); + var name = checkSymbol(M, 'procedure-rename', 1); return baselib.functions.renameProcedure(proc, name); }); @@ -1213,19 +1213,19 @@ installPrimitiveProcedure( 'member', 2, - function (MACHINE) { - var x = MACHINE.env[MACHINE.env.length-1]; - var lst = MACHINE.env[MACHINE.env.length-2]; + function (M) { + var x = M.env[M.env.length-1]; + var lst = M.env[M.env.length-2]; while (true) { if (lst === NULL) { return false; } if (! isPair(lst)) { - raiseArgumentTypeError(MACHINE, + raiseArgumentTypeError(M, 'member', 'list', 1, - MACHINE.env[MACHINE.env.length - 1 - 1]); + M.env[M.env.length - 1 - 1]); } if (equals(x, (lst.first))) { return lst; @@ -1239,11 +1239,11 @@ installPrimitiveProcedure( 'reverse', 1, - function (MACHINE) { + function (M) { var rev = NULL; - var lst = MACHINE.env[MACHINE.env.length-1]; + var lst = M.env[M.env.length-1]; while(lst !== NULL) { - rev = makePair(testArgument(MACHINE, 'pair', isPair, lst, 0, 'reverse').first, + rev = makePair(testArgument(M, 'pair', isPair, lst, 0, 'reverse').first, rev); lst = lst.rest; } @@ -1256,43 +1256,43 @@ installPrimitiveProcedure( 'number?', 1, - function(MACHINE) { - return isNumber(MACHINE.env[MACHINE.env.length - 1]); + function(M) { + return isNumber(M.env[M.env.length - 1]); }); installPrimitiveProcedure( 'real?', 1, - function(MACHINE) { - return isReal(MACHINE.env[MACHINE.env.length - 1]); + function(M) { + return isReal(M.env[M.env.length - 1]); }); installPrimitiveProcedure( 'complex?', 1, - function(MACHINE) { - return isComplex(MACHINE.env[MACHINE.env.length - 1]); + function(M) { + return isComplex(M.env[M.env.length - 1]); }); installPrimitiveProcedure( 'rational?', 1, - function(MACHINE) { - return isRational(MACHINE.env[MACHINE.env.length - 1]); + function(M) { + return isRational(M.env[M.env.length - 1]); }); installPrimitiveProcedure( 'even?', 1, - function(MACHINE) { - var n = checkInteger(MACHINE, 'even?', 0); + function(M) { + var n = checkInteger(M, 'even?', 0); return baselib.numbers.equals(0, baselib.numbers.modulo(n, 2)); }); installPrimitiveProcedure( 'odd?', 1, - function(MACHINE) { - var n = checkInteger(MACHINE, 'odd?', 0); + function(M) { + var n = checkInteger(M, 'odd?', 0); return baselib.numbers.equals(1, baselib.numbers.modulo(n, 2)); }); @@ -1300,16 +1300,16 @@ installPrimitiveProcedure( 'positive?', 1, - function(MACHINE) { - var n = checkReal(MACHINE, 'positive?', 0); + function(M) { + var n = checkReal(M, 'positive?', 0); return baselib.numbers.greaterThan(n, 0); }); installPrimitiveProcedure( 'negative?', 1, - function(MACHINE) { - var n = checkReal(MACHINE, 'negative?', 0); + function(M) { + var n = checkReal(M, 'negative?', 0); return baselib.numbers.lessThan(n, 0); }); @@ -1321,34 +1321,34 @@ installPrimitiveProcedure( 'abs', 1, - function (MACHINE) { + function (M) { return baselib.numbers.abs( - checkNumber(MACHINE, 'abs', 0)); + checkNumber(M, 'abs', 0)); }); installPrimitiveProcedure( 'acos', 1, - function (MACHINE) { + function (M) { return baselib.numbers.acos( - checkNumber(MACHINE, 'acos', 0)); + checkNumber(M, 'acos', 0)); }); installPrimitiveProcedure( 'asin', 1, - function (MACHINE) { + function (M) { return baselib.numbers.asin( - checkNumber(MACHINE, 'asin', 0)); + checkNumber(M, 'asin', 0)); }); installPrimitiveProcedure( 'sin', 1, - function (MACHINE) { + function (M) { return baselib.numbers.sin( - checkNumber(MACHINE, 'sin', 0)); + checkNumber(M, 'sin', 0)); }); @@ -1356,18 +1356,18 @@ installPrimitiveProcedure( 'sinh', 1, - function (MACHINE) { + function (M) { return baselib.numbers.sinh( - checkNumber(MACHINE, 'sinh', 0)); + checkNumber(M, 'sinh', 0)); }); installPrimitiveProcedure( 'tan', 1, - function (MACHINE) { + function (M) { return baselib.numbers.tan( - checkNumber(MACHINE, 'tan', 0)); + checkNumber(M, 'tan', 0)); }); @@ -1375,15 +1375,15 @@ installPrimitiveProcedure( 'atan', makeList(1, 2), - function (MACHINE) { - if (MACHINE.argcount === 1) { + function (M) { + if (M.argcount === 1) { return baselib.numbers.atan( - checkNumber(MACHINE, 'atan', 0)); + checkNumber(M, 'atan', 0)); } else { return makeFloat( Math.atan2( - baselib.numbers.toFixnum(checkNumber(MACHINE, 'atan', 0)), - baselib.numbers.toFixnum(checkNumber(MACHINE, 'atan', 1)))); + baselib.numbers.toFixnum(checkNumber(M, 'atan', 0)), + baselib.numbers.toFixnum(checkNumber(M, 'atan', 1)))); } }); @@ -1391,25 +1391,25 @@ installPrimitiveProcedure( 'angle', 1, - function (MACHINE) { + function (M) { return baselib.numbers.angle( - checkNumber(MACHINE, 'angle', 0)); + checkNumber(M, 'angle', 0)); }); installPrimitiveProcedure( 'magnitude', 1, - function (MACHINE) { + function (M) { return baselib.numbers.magnitude( - checkNumber(MACHINE, 'magnitude', 0)); + checkNumber(M, 'magnitude', 0)); }); installPrimitiveProcedure( 'conjugate', 1, - function (MACHINE) { + function (M) { return baselib.numbers.conjugate( - checkNumber(MACHINE, 'conjugate', 0)); + checkNumber(M, 'conjugate', 0)); }); @@ -1418,27 +1418,27 @@ installPrimitiveProcedure( 'cos', 1, - function (MACHINE) { + function (M) { return baselib.numbers.cos( - checkNumber(MACHINE, 'cos', 0)); + checkNumber(M, 'cos', 0)); }); installPrimitiveProcedure( 'cosh', 1, - function (MACHINE) { + function (M) { return baselib.numbers.cosh( - checkNumber(MACHINE, 'cosh', 0)); + checkNumber(M, 'cosh', 0)); }); installPrimitiveProcedure( 'gcd', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { + function (M) { var args = [], i, x; - for (i = 0; i < MACHINE.argcount; i++) { - args.push(checkNumber(MACHINE, 'gcd', i)); + for (i = 0; i < M.argcount; i++) { + args.push(checkNumber(M, 'gcd', i)); } x = args.shift(); return baselib.numbers.gcd(x, args); @@ -1447,10 +1447,10 @@ installPrimitiveProcedure( 'lcm', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { + function (M) { var args = [], i, x; - for (i = 0; i < MACHINE.argcount; i++) { - args.push(checkNumber(MACHINE, 'lcm', i)); + for (i = 0; i < M.argcount; i++) { + args.push(checkNumber(M, 'lcm', i)); } x = args.shift(); return baselib.numbers.lcm(x, args); @@ -1462,43 +1462,43 @@ installPrimitiveProcedure( 'exp', 1, - function (MACHINE) { + function (M) { return baselib.numbers.exp( - checkNumber(MACHINE, 'exp', 0)); + checkNumber(M, 'exp', 0)); }); installPrimitiveProcedure( 'expt', 2, - function (MACHINE) { + function (M) { return baselib.numbers.expt( - checkNumber(MACHINE, 'expt', 0), - checkNumber(MACHINE, 'expt', 1)); + checkNumber(M, 'expt', 0), + checkNumber(M, 'expt', 1)); }); installPrimitiveProcedure( 'exact?', 1, - function (MACHINE) { + function (M) { return baselib.numbers.isExact( - checkNumber(MACHINE, 'exact?', 0)); + checkNumber(M, 'exact?', 0)); }); installPrimitiveProcedure( 'integer?', 1, - function (MACHINE) { - return baselib.numbers.isInteger(MACHINE.env[MACHINE.env.length - 1]); + function (M) { + return baselib.numbers.isInteger(M.env[M.env.length - 1]); }); installPrimitiveProcedure( 'exact-nonnegative-integer?', 1, - function (MACHINE) { - return isNatural(MACHINE.env[MACHINE.env.length - 1]); + function (M) { + return isNatural(M.env[M.env.length - 1]); }); @@ -1506,67 +1506,67 @@ installPrimitiveProcedure( 'imag-part', 1, - function (MACHINE) { + function (M) { return baselib.numbers.imaginaryPart( - checkNumber(MACHINE, 'imag-part', 0)); + checkNumber(M, 'imag-part', 0)); }); installPrimitiveProcedure( 'real-part', 1, - function (MACHINE) { + function (M) { return baselib.numbers.realPart( - checkNumber(MACHINE, 'real-part', 0)); + checkNumber(M, 'real-part', 0)); }); installPrimitiveProcedure( 'make-polar', 2, - function (MACHINE) { + function (M) { return makeComplexPolar( - checkReal(MACHINE, 'make-polar', 0), - checkReal(MACHINE, 'make-polar', 1)); + checkReal(M, 'make-polar', 0), + checkReal(M, 'make-polar', 1)); }); installPrimitiveProcedure( 'make-rectangular', 2, - function (MACHINE) { + function (M) { return makeComplex( - checkReal(MACHINE, 'make-rectangular', 0), - checkReal(MACHINE, 'make-rectangular', 1)); + checkReal(M, 'make-rectangular', 0), + checkReal(M, 'make-rectangular', 1)); }); installPrimitiveProcedure( 'modulo', 2, - function (MACHINE) { + function (M) { return baselib.numbers.modulo( - checkInteger(MACHINE, 'modulo', 0), - checkInteger(MACHINE, 'modulo', 1)); + checkInteger(M, 'modulo', 0), + checkInteger(M, 'modulo', 1)); }); installPrimitiveProcedure( 'remainder', 2, - function (MACHINE) { + function (M) { return baselib.numbers.remainder( - checkInteger(MACHINE, 'remainder', 0), - checkInteger(MACHINE, 'remainder', 1)); + checkInteger(M, 'remainder', 0), + checkInteger(M, 'remainder', 1)); }); installPrimitiveProcedure( 'quotient', 2, - function (MACHINE) { + function (M) { return baselib.numbers.quotient( - checkInteger(MACHINE, 'quotient', 0), - checkInteger(MACHINE, 'quotient', 1)); + checkInteger(M, 'quotient', 0), + checkInteger(M, 'quotient', 1)); }); @@ -1574,35 +1574,35 @@ installPrimitiveProcedure( 'floor', 1, - function (MACHINE) { + function (M) { return baselib.numbers.floor( - checkReal(MACHINE, 'floor', 0)); + checkReal(M, 'floor', 0)); }); installPrimitiveProcedure( 'ceiling', 1, - function (MACHINE) { + function (M) { return baselib.numbers.ceiling( - checkReal(MACHINE, 'ceiling', 0)); + checkReal(M, 'ceiling', 0)); }); installPrimitiveProcedure( 'round', 1, - function (MACHINE) { + function (M) { return baselib.numbers.round( - checkReal(MACHINE, 'round', 0)); + checkReal(M, 'round', 0)); }); installPrimitiveProcedure( 'truncate', 1, - function (MACHINE) { - var n = checkReal(MACHINE, 'truncate', 0); + function (M) { + var n = checkReal(M, 'truncate', 0); if (baselib.numbers.lessThan(n, 0)) { return baselib.numbers.ceiling(n); } else { @@ -1614,36 +1614,36 @@ installPrimitiveProcedure( 'numerator', 1, - function (MACHINE) { + function (M) { return baselib.numbers.numerator( - checkRational(MACHINE, 'numerator', 0)); + checkRational(M, 'numerator', 0)); }); installPrimitiveProcedure( 'denominator', 1, - function (MACHINE) { + function (M) { return baselib.numbers.denominator( - checkRational(MACHINE, 'denominator', 0)); + checkRational(M, 'denominator', 0)); }); installPrimitiveProcedure( 'log', 1, - function (MACHINE) { + function (M) { return baselib.numbers.log( - checkNumber(MACHINE, 'log', 0)); + checkNumber(M, 'log', 0)); }); installPrimitiveProcedure( 'sqr', 1, - function (MACHINE) { + function (M) { return baselib.numbers.sqr( - checkNumber(MACHINE, 'sqr', 0)); + checkNumber(M, 'sqr', 0)); }); @@ -1652,9 +1652,9 @@ installPrimitiveProcedure( 'sqrt', 1, - function (MACHINE) { + function (M) { return baselib.numbers.sqrt( - checkNumber(MACHINE, 'sqrt', 0)); + checkNumber(M, 'sqrt', 0)); }); @@ -1662,9 +1662,9 @@ installPrimitiveProcedure( 'integer-sqrt', 1, - function (MACHINE) { + function (M) { return baselib.numbers.integerSqrt( - checkInteger(MACHINE, 'integer-sqrt', 0)); + checkInteger(M, 'integer-sqrt', 0)); }); @@ -1672,21 +1672,21 @@ installPrimitiveProcedure( 'sgn', 1, - function (MACHINE) { + function (M) { return baselib.numbers.sign( - checkInteger(MACHINE, 'sgn', 0)); + checkInteger(M, 'sgn', 0)); }); installPrimitiveProcedure( 'min', baselib.arity.makeArityAtLeast(1), - function(MACHINE) { + function(M) { var i; var next; - var currentMin = checkReal(MACHINE, 'min', 0); - for (i = 1; i < MACHINE.argcount; i++) { - next = checkReal(MACHINE, 'min', i); + var currentMin = checkReal(M, 'min', 0); + for (i = 1; i < M.argcount; i++) { + next = checkReal(M, 'min', i); if (baselib.numbers.lessThan(next, currentMin)) { currentMin = next; } @@ -1697,12 +1697,12 @@ installPrimitiveProcedure( 'max', baselib.arity.makeArityAtLeast(1), - function(MACHINE) { + function(M) { var i; var next; - var currentMax = checkReal(MACHINE, 'min', 0); - for (i = 1; i < MACHINE.argcount; i++) { - next = checkReal(MACHINE, 'min', i); + var currentMax = checkReal(M, 'min', 0); + for (i = 1; i < M.argcount; i++) { + next = checkReal(M, 'min', i); if (baselib.numbers.greaterThan(next, currentMax)) { currentMax = next; } @@ -1718,76 +1718,76 @@ installPrimitiveProcedure( 'error', baselib.arity.makeArityAtLeast(1), - function (MACHINE) { + function (M) { var i; - if (MACHINE.argcount === 1) { - var sym = checkSymbol(MACHINE, 'error', 1); - raise(MACHINE, baselib.exceptions.makeExnFail(String(sym), - MACHINE.captureContinuationMarks())); + if (M.argcount === 1) { + var sym = checkSymbol(M, 'error', 1); + raise(M, baselib.exceptions.makeExnFail(String(sym), + M.captureContinuationMarks())); } - if (isString(MACHINE.env[MACHINE.env.length - 1])) { + if (isString(M.env[M.env.length - 1])) { var vs = []; - for (i = 1; i < MACHINE.argcount; i++) { - vs.push(baselib.format.format("~e", [MACHINE.env[MACHINE.env.length - 1 - i]])); + for (i = 1; i < M.argcount; i++) { + vs.push(baselib.format.format("~e", [M.env[M.env.length - 1 - i]])); } - raise(MACHINE, baselib.exceptions.makeExnFail(String(MACHINE.env[MACHINE.env.length - 1]) + + raise(M, baselib.exceptions.makeExnFail(String(M.env[M.env.length - 1]) + ": " + vs.join(' '), - MACHINE.captureContinuationMarks())); + M.captureContinuationMarks())); } - if (isSymbol(MACHINE.env[MACHINE.env.length - 1])) { - var fmtString = checkString(MACHINE, 'error', 1); - var args = [MACHINE.env[MACHINE.env.length - 1]]; - for (i = 2; i < MACHINE.argcount; i++) { - args.push(MACHINE.env[MACHINE.env.length - 1 - i]); + if (isSymbol(M.env[M.env.length - 1])) { + var fmtString = checkString(M, 'error', 1); + var args = [M.env[M.env.length - 1]]; + for (i = 2; i < M.argcount; i++) { + args.push(M.env[M.env.length - 1 - i]); } - raise(MACHINE, baselib.exceptions.makeExnFail( + raise(M, baselib.exceptions.makeExnFail( baselib.format.format('~s: ' + String(fmtString), args), - MACHINE.captureContinuationMarks())); + M.captureContinuationMarks())); } // Fall-through - raiseArgumentTypeError(MACHINE, 'error', 'symbol or string', 0, MACHINE.env[MACHINE.env.length - 1]); + raiseArgumentTypeError(M, 'error', 'symbol or string', 0, M.env[M.env.length - 1]); }); installPrimitiveProcedure( 'raise-mismatch-error', 3, - function (MACHINE) { - var name = checkSymbol(MACHINE, 'raise-mismatch-error', 0); - var message = checkString(MACHINE, 'raise-mismatch-error', 0); - var val = MACHINE.env[MACHINE.env.length - 1 - 2]; - raise(MACHINE, baselib.exceptions.makeExnFail( + function (M) { + var name = checkSymbol(M, 'raise-mismatch-error', 0); + var message = checkString(M, 'raise-mismatch-error', 0); + var val = M.env[M.env.length - 1 - 2]; + raise(M, baselib.exceptions.makeExnFail( baselib.format.format("~a: ~a~e", [name, message, val]), - MACHINE.captureContinuationMarks())); + M.captureContinuationMarks())); }); installPrimitiveProcedure( 'raise-type-error', baselib.arity.makeArityAtLeast(3), - function (MACHINE) { - var name = checkSymbol(MACHINE, 'raise-type-error', 0); - var expected = checkString(MACHINE, 'raise-type-error', 1); - if (MACHINE.argcount === 3) { - raiseArgumentTypeError(MACHINE, + function (M) { + var name = checkSymbol(M, 'raise-type-error', 0); + var expected = checkString(M, 'raise-type-error', 1); + if (M.argcount === 3) { + raiseArgumentTypeError(M, name, expected, undefined, - MACHINE.env[MACHINE.env.length - 1 - 2]); + M.env[M.env.length - 1 - 2]); } else { - raiseArgumentTypeError(MACHINE, + raiseArgumentTypeError(M, name, expected, - checkNatural(MACHINE, 'raise-type-error', 2), - MACHINE.env[MACHINE.env.length - 1 - 2]); + checkNatural(M, 'raise-type-error', 2), + M.env[M.env.length - 1 - 2]); } }); @@ -1797,9 +1797,9 @@ installPrimitiveClosure( 'make-struct-type', makeList(4, 5, 6, 7, 8, 9, 10, 11), - function (MACHINE) { + function (M) { withArguments( - MACHINE, + M, 4, [false, NULL, @@ -1839,11 +1839,11 @@ makePrimitiveProcedure( constructorName, baselib.numbers.toFixnum(initFieldCount), - function (MACHINE) { + function (M) { var args = []; var i; for(i = 0; i < initFieldCount; i++) { - args.push(MACHINE.env[MACHINE.env.length - 1 - i]); + args.push(M.env[M.env.length - 1 - i]); } return structType.constructor.apply(null, args); }); @@ -1852,18 +1852,18 @@ makePrimitiveProcedure( String(name) + "?", 1, - function (MACHINE) { - return structType.predicate(MACHINE.env[MACHINE.env.length - 1]); + function (M) { + return structType.predicate(M.env[M.env.length - 1]); }); var accessorValue = makePrimitiveProcedure( String(name) + "-accessor", 2, - function (MACHINE) { + function (M) { return structType.accessor( - MACHINE.env[MACHINE.env.length - 1], - baselib.numbers.toFixnum(MACHINE.env[MACHINE.env.length - 2])); + M.env[M.env.length - 1], + baselib.numbers.toFixnum(M.env[M.env.length - 2])); }); accessorValue.structType = structType; @@ -1871,16 +1871,16 @@ makePrimitiveProcedure( String(name) + "-mutator", 3, - function (MACHINE) { + function (M) { return structType.mutator( - MACHINE.env[MACHINE.env.length - 1], - baselib.numbers.toFixnum(MACHINE.env[MACHINE.env.length - 2]), - MACHINE.env[MACHINE.env.length - 3]); + M.env[M.env.length - 1], + baselib.numbers.toFixnum(M.env[M.env.length - 2]), + M.env[M.env.length - 3]); }); mutatorValue.structType = structType; - finalizeClosureCall(MACHINE, + finalizeClosureCall(M, structType, constructorValue, predicateValue, @@ -1893,13 +1893,13 @@ installPrimitiveProcedure( 'current-inspector', makeList(0, 1), - function (MACHINE) { - if (MACHINE.argcount === 1) { - MACHINE.params['currentInspector'] = - checkInspector(MACHINE, 'current-inspector', 0); + function (M) { + if (M.argcount === 1) { + M.params['currentInspector'] = + checkInspector(M, 'current-inspector', 0); return VOID; } else { - return MACHINE.params['currentInspector']; + return M.params['currentInspector']; } } ); @@ -1908,12 +1908,12 @@ installPrimitiveProcedure( 'make-struct-field-accessor', makeList(2, 3), - function (MACHINE){ - var structType = MACHINE.env[MACHINE.env.length - 1].structType; - var index = MACHINE.env[MACHINE.env.length - 2]; + function (M){ + var structType = M.env[M.env.length - 1].structType; + var index = M.env[M.env.length - 2]; var name; - if (MACHINE.argcount === 3) { - name = String(MACHINE.env[MACHINE.env.length - 3]); + if (M.argcount === 3) { + name = String(M.env[M.env.length - 3]); } else { name = 'field' + index; } @@ -1922,8 +1922,8 @@ return makePrimitiveProcedure( name, 1, - function (MACHINE) { - var aStruct = checkStruct(MACHINE, name, 0); + function (M) { + var aStruct = checkStruct(M, name, 0); return structType.accessor( aStruct, baselib.numbers.toFixnum(index)); @@ -1935,12 +1935,12 @@ installPrimitiveProcedure( 'make-struct-field-mutator', makeList(2, 3), - function (MACHINE){ - var structType = MACHINE.env[MACHINE.env.length - 1].structType; - var index = MACHINE.env[MACHINE.env.length - 2]; + function (M){ + var structType = M.env[M.env.length - 1].structType; + var index = M.env[M.env.length - 2]; var name; - if (MACHINE.argcount === 3) { - name = String(MACHINE.env[MACHINE.env.length - 3]); + if (M.argcount === 3) { + name = String(M.env[M.env.length - 3]); } else { name = 'field' + index; } @@ -1949,12 +1949,12 @@ return makePrimitiveProcedure( name, 2, - function (MACHINE) { - var aStruct = checkStruct(MACHINE, name, 0); + function (M) { + var aStruct = checkStruct(M, name, 0); return structType.mutator( aStruct, baselib.numbers.toFixnum(index), - MACHINE.env[MACHINE.env.length - 2]); + M.env[M.env.length - 2]); }); }); @@ -1962,8 +1962,8 @@ installPrimitiveProcedure( 'make-placeholder', 1, - function(MACHINE) { - var v = MACHINE.env[MACHINE.env.length - 1]; + function(M) { + var v = M.env[M.env.length - 1]; return baselib.placeholders.makePlaceholder(v); }); @@ -1971,9 +1971,9 @@ installPrimitiveProcedure( 'placeholder-set!', 2, - function(MACHINE) { - var placeholder = checkPlaceholder(MACHINE, 'placeholder-set!', 0); - var val = MACHINE.env[MACHINE.env.length - 2]; + function(M) { + var placeholder = checkPlaceholder(M, 'placeholder-set!', 0); + var val = M.env[M.env.length - 2]; placeholder.set(val); return VOID; }); @@ -1983,8 +1983,8 @@ installPrimitiveProcedure( 'make-reader-graph', 1, - function(MACHINE) { - var x = MACHINE.env[MACHINE.env.length - 1]; + function(M) { + var x = M.env[M.env.length - 1]; return baselib.readergraph.readerGraph(x, baselib.hashes.makeLowLevelEqHash(), 0); @@ -1996,67 +1996,68 @@ installPrimitiveProcedure( 'srcloc', 5, - function(MACHINE) { - var source = MACHINE.env[MACHINE.env.length - 1]; - var line = checkNatural(MACHINE, 'srcloc', 1); - var column = checkNatural(MACHINE, 'srcloc', 2); - var position = checkNatural(MACHINE, 'srcloc', 3); - var span = checkNatural(MACHINE, 'srcloc', 4); + function(M) { + var source = M.env[M.env.length - 1]; + var line = checkNatural(M, 'srcloc', 1); + var column = checkNatural(M, 'srcloc', 2); + var position = checkNatural(M, 'srcloc', 3); + var span = checkNatural(M, 'srcloc', 4); return baselib.srclocs.makeSrcloc(source, line, column, position, span); }); + installPrimitiveProcedure( 'make-srcloc', 5, - function(MACHINE) { - var source = MACHINE.env[MACHINE.env.length - 1]; - var line = checkNatural(MACHINE, 'make-srcloc', 1); - var column = checkNatural(MACHINE, 'make-srcloc', 2); - var position = checkNatural(MACHINE, 'make-srcloc', 3); - var span = checkNatural(MACHINE, 'make-srcloc', 4); + function(M) { + var source = M.env[M.env.length - 1]; + var line = checkNatural(M, 'make-srcloc', 1); + var column = checkNatural(M, 'make-srcloc', 2); + var position = checkNatural(M, 'make-srcloc', 3); + var span = checkNatural(M, 'make-srcloc', 4); return baselib.srclocs.makeSrcloc(source, line, column, position, span); }); + installPrimitiveProcedure( 'srcloc?', 1, - function(MACHINE) { - return baselib.srclocs.isSrcloc(MACHINE.env[MACHINE.env.length - 1]); + function(M) { + return baselib.srclocs.isSrcloc(M.env[M.env.length - 1]); }); + installPrimitiveProcedure( 'srcloc-source', 1, - function(MACHINE) { - return baselib.srclocs.srclocSource(checkSrcloc(MACHINE, 'srcloc-source', 0)); + function(M) { + return baselib.srclocs.srclocSource(checkSrcloc(M, 'srcloc-source', 0)); }); + installPrimitiveProcedure( 'srcloc-line', 1, - function(MACHINE) { - return baselib.srclocs.srclocLine(checkSrcloc(MACHINE, 'srcloc-line', 0)); + function(M) { + return baselib.srclocs.srclocLine(checkSrcloc(M, 'srcloc-line', 0)); }); + installPrimitiveProcedure( 'srcloc-column', 1, - function(MACHINE) { - return baselib.srclocs.srclocColumn(checkSrcloc(MACHINE, 'srcloc-column', 0)); + function(M) { + return baselib.srclocs.srclocColumn(checkSrcloc(M, 'srcloc-column', 0)); }); + installPrimitiveProcedure( 'srcloc-position', 1, - function(MACHINE) { - return baselib.srclocs.srclocPosition(checkSrcloc(MACHINE, 'srcloc-position', 0)); + function(M) { + return baselib.srclocs.srclocPosition(checkSrcloc(M, 'srcloc-position', 0)); }); + installPrimitiveProcedure( 'srcloc-span', 1, - function(MACHINE) { - return baselib.srclocs.srclocSpan(checkSrcloc(MACHINE, 'srcloc-span', 0)); + function(M) { + return baselib.srclocs.srclocSpan(checkSrcloc(M, 'srcloc-span', 0)); }); - - - - - - exports['Primitives'] = Primitives; exports['installPrimitiveProcedure'] = installPrimitiveProcedure; diff --git a/js-assembler/runtime-src/runtime.js b/js-assembler/runtime-src/runtime.js index fc7d328..38465ba 100644 --- a/js-assembler/runtime-src/runtime.js +++ b/js-assembler/runtime-src/runtime.js @@ -212,11 +212,11 @@ var Machine = function() { this.callsBeforeTrampoline = STACK_LIMIT_ESTIMATE; - this.val = undefined; - this.proc = undefined; - this.argcount = undefined; - this.env = []; - this.control = []; // Arrayof (U Frame CallFrame PromptFrame) + this.val = undefined; // value register + this.proc = undefined; // procedure register + this.argcount = undefined; // argument count + this.env = []; // environment + this.control = []; // control: Arrayof (U Frame CallFrame PromptFrame) this.running = false; this.modules = {}; // String -> ModuleRecord this.mainModules = []; // Arrayof String @@ -444,17 +444,16 @@ Machine.prototype.trampoline = function(initialJump) { - var MACHINE = this; var thunk = initialJump; var startTime = (new Date()).valueOf(); - MACHINE.callsBeforeTrampoline = STACK_LIMIT_ESTIMATE; - MACHINE.params.numBouncesBeforeYield = - MACHINE.params.maxNumBouncesBeforeYield; - MACHINE.running = true; + this.callsBeforeTrampoline = STACK_LIMIT_ESTIMATE; + this.params.numBouncesBeforeYield = + this.params.maxNumBouncesBeforeYield; + this.running = true; while(true) { try { - thunk(MACHINE); + thunk(this); break; } catch (e) { // There are a few kinds of things that can get thrown @@ -479,35 +478,36 @@ // The running flag is set to false. if (typeof(e) === 'function') { thunk = e; - MACHINE.callsBeforeTrampoline = STACK_LIMIT_ESTIMATE; + this.callsBeforeTrampoline = STACK_LIMIT_ESTIMATE; - if (MACHINE.params.numBouncesBeforeYield-- < 0) { + if (this.params.numBouncesBeforeYield-- < 0) { recomputeMaxNumBouncesBeforeYield( - MACHINE, + this, (new Date()).valueOf() - startTime); - scheduleTrampoline(MACHINE, thunk); + scheduleTrampoline(this, thunk); return; } } else if (e instanceof Pause) { - var restart = makeRestartFunction(MACHINE); + var restart = makeRestartFunction(this); e.onPause(restart); return; } else if (e instanceof HaltError) { - MACHINE.running = false; - e.onHalt(MACHINE); + this.running = false; + e.onHalt(this); return; } else { // General error condition: just exit out // of the trampoline and call the current error handler. - MACHINE.running = false; - MACHINE.params.currentErrorHandler(MACHINE, e); + this.running = false; + this.params.currentErrorHandler(this, e); return; } } } - MACHINE.running = false; + this.running = false; + var that = this; setTimeout( - function() { MACHINE.params.currentSuccessHandler(MACHINE); }, + function() { that.params.currentSuccessHandler(that); }, 0); return; };