removing unnecessary label
This commit is contained in:
parent
fab12bcc83
commit
d758585c85
|
@ -132,7 +132,7 @@ EOF
|
||||||
[(MakeCompiledProcedure? op)
|
[(MakeCompiledProcedure? op)
|
||||||
(list (MakeCompiledProcedure-label op))]
|
(list (MakeCompiledProcedure-label op))]
|
||||||
[(ApplyPrimitiveProcedure? op)
|
[(ApplyPrimitiveProcedure? op)
|
||||||
(list (ApplyPrimitiveProcedure-label op))]
|
empty]
|
||||||
[(GetControlStackLabel? op)
|
[(GetControlStackLabel? op)
|
||||||
empty]
|
empty]
|
||||||
[(CaptureEnvironment? op)
|
[(CaptureEnvironment? op)
|
||||||
|
@ -386,9 +386,8 @@ EOF
|
||||||
(assemble-display-name (MakeCompiledProcedure-display-name op)))]
|
(assemble-display-name (MakeCompiledProcedure-display-name op)))]
|
||||||
|
|
||||||
[(ApplyPrimitiveProcedure? op)
|
[(ApplyPrimitiveProcedure? op)
|
||||||
(format "MACHINE.proc(~a, ~a)"
|
(format "MACHINE.proc(MACHINE, ~a)"
|
||||||
(ApplyPrimitiveProcedure-arity op)
|
(ApplyPrimitiveProcedure-arity op))]
|
||||||
(ApplyPrimitiveProcedure-label op))]
|
|
||||||
|
|
||||||
[(GetControlStackLabel? op)
|
[(GetControlStackLabel? op)
|
||||||
(format "MACHINE.control[MACHINE.control.length-1].label")]
|
(format "MACHINE.control[MACHINE.control.length-1].label")]
|
||||||
|
|
|
@ -482,7 +482,7 @@
|
||||||
;; the appropriate spot on the stack. This takes into account the popenviroment
|
;; the appropriate spot on the stack. This takes into account the popenviroment
|
||||||
;; that happens right afterwards.
|
;; that happens right afterwards.
|
||||||
(adjust-target-depth target n)
|
(adjust-target-depth target n)
|
||||||
(make-ApplyPrimitiveProcedure n after-call))
|
(make-ApplyPrimitiveProcedure n))
|
||||||
,(make-PopEnvironment n 0))))
|
,(make-PopEnvironment n 0))))
|
||||||
|
|
||||||
after-call))))
|
after-call))))
|
||||||
|
|
|
@ -139,11 +139,7 @@
|
||||||
;; Applies the primitive procedure that's stored in the proc register, using
|
;; Applies the primitive procedure that's stored in the proc register, using
|
||||||
;; the arity number of values that are bound in the environment as arguments
|
;; the arity number of values that are bound in the environment as arguments
|
||||||
;; to that primitive.
|
;; to that primitive.
|
||||||
;;
|
(define-struct: ApplyPrimitiveProcedure ([arity : Natural])
|
||||||
;; If the primitive needs to capture the current continuation, it can get the
|
|
||||||
;; immediate address at label.
|
|
||||||
(define-struct: ApplyPrimitiveProcedure ([arity : Natural]
|
|
||||||
[label : Symbol])
|
|
||||||
#:transparent)
|
#:transparent)
|
||||||
|
|
||||||
|
|
||||||
|
|
78
runtime.js
78
runtime.js
|
@ -34,16 +34,16 @@ var Closure = function(label, arity, closedVals, displayName) {
|
||||||
var Primitives = (function() {
|
var Primitives = (function() {
|
||||||
var NULL = [];
|
var NULL = [];
|
||||||
return {
|
return {
|
||||||
'display': function(arity, returnLabel) {
|
'display': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
MACHINE.params.currentDisplayer(firstArg);
|
MACHINE.params.currentDisplayer(firstArg);
|
||||||
},
|
},
|
||||||
|
|
||||||
'newline': function(arity, returnLabel) {
|
'newline': function(MACHINE, arity) {
|
||||||
MACHINE.params.currentDisplayer("\n");
|
MACHINE.params.currentDisplayer("\n");
|
||||||
},
|
},
|
||||||
|
|
||||||
'displayln': function(arity, returnLabel){
|
'displayln': function(MACHINE, arity){
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
MACHINE.params.currentDisplayer(firstArg);
|
MACHINE.params.currentDisplayer(firstArg);
|
||||||
MACHINE.params.currentDisplayer("\n");
|
MACHINE.params.currentDisplayer("\n");
|
||||||
|
@ -53,68 +53,68 @@ var Primitives = (function() {
|
||||||
|
|
||||||
'e' : Math.E,
|
'e' : Math.E,
|
||||||
|
|
||||||
'=': function(arity, returnLabel) {
|
'=': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg === secondArg;
|
return firstArg === secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'<': function(arity, returnLabel) {
|
'<': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg < secondArg;
|
return firstArg < secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'>': function(arity, returnLabel) {
|
'>': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg > secondArg;
|
return firstArg > secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'<=': function(arity, returnLabel) {
|
'<=': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg <= secondArg;
|
return firstArg <= secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'>=': function(arity, returnLabel) {
|
'>=': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg >= secondArg;
|
return firstArg >= secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'+': function(arity, returnLabel) {
|
'+': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
|
|
||||||
return firstArg + secondArg;
|
return firstArg + secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'*': function(arity, returnLabel) {
|
'*': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg * secondArg;
|
return firstArg * secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'-': function(arity, returnLabel) {
|
'-': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg - secondArg;
|
return firstArg - secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'/': function(arity, returnLabel) {
|
'/': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg / secondArg;
|
return firstArg / secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'cons': function(arity, returnLabel) {
|
'cons': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return [firstArg, secondArg];
|
return [firstArg, secondArg];
|
||||||
},
|
},
|
||||||
|
|
||||||
'list': function(arity, returnLabel) {
|
'list': function(MACHINE, arity) {
|
||||||
var result = NULL;
|
var result = NULL;
|
||||||
for (var i = 0; i < arity; i++) {
|
for (var i = 0; i < arity; i++) {
|
||||||
result = [MACHINE.env[MACHINE.env.length - (arity - i)],
|
result = [MACHINE.env[MACHINE.env.length - (arity - i)],
|
||||||
|
@ -123,62 +123,62 @@ var Primitives = (function() {
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
'car': function(arity, returnLabel) {
|
'car': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg[0];
|
return firstArg[0];
|
||||||
},
|
},
|
||||||
|
|
||||||
'cdr': function(arity, returnLabel) {
|
'cdr': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg[1];
|
return firstArg[1];
|
||||||
},
|
},
|
||||||
|
|
||||||
'pair?': function(arity, returnLabel) {
|
'pair?': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return (typeof(firstArg) == 'object' &&
|
return (typeof(firstArg) == 'object' &&
|
||||||
firstArg.length === 2);
|
firstArg.length === 2);
|
||||||
},
|
},
|
||||||
|
|
||||||
'set-car!': function(arity, returnLabel) {
|
'set-car!': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
firstArg[0] = secondArg;
|
firstArg[0] = secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'set-cdr!': function(arity, returnLabel) {
|
'set-cdr!': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
firstArg[1] = secondArg;
|
firstArg[1] = secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'not': function(arity, returnLabel) {
|
'not': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return (!firstArg);
|
return (!firstArg);
|
||||||
},
|
},
|
||||||
|
|
||||||
'null' : NULL,
|
'null' : NULL,
|
||||||
|
|
||||||
'null?': function(arity, returnLabel) {
|
'null?': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg === NULL;
|
return firstArg === NULL;
|
||||||
},
|
},
|
||||||
|
|
||||||
'add1': function(arity, returnLabel) {
|
'add1': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg + 1;
|
return firstArg + 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
'sub1': function(arity, returnLabel) {
|
'sub1': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg - 1;
|
return firstArg - 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
'zero?': function(arity, returnLabel) {
|
'zero?': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg === 0;
|
return firstArg === 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
'vector': function(arity, returnLabel) {
|
'vector': function(MACHINE, arity) {
|
||||||
var i;
|
var i;
|
||||||
var result = [];
|
var result = [];
|
||||||
for (i = 0; i < arity; i++) {
|
for (i = 0; i < arity; i++) {
|
||||||
|
@ -187,7 +187,7 @@ var Primitives = (function() {
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
'vector->list': function(arity, returnLabel) {
|
'vector->list': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var i;
|
var i;
|
||||||
var result = NULL;
|
var result = NULL;
|
||||||
|
@ -197,7 +197,7 @@ var Primitives = (function() {
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
'list->vector': function(arity, returnLabel) {
|
'list->vector': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var result = [];
|
var result = [];
|
||||||
while (firstArg !== NULL) {
|
while (firstArg !== NULL) {
|
||||||
|
@ -207,13 +207,13 @@ var Primitives = (function() {
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
'vector-ref': function(arity, returnLabel) {
|
'vector-ref': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg[secondArg];
|
return firstArg[secondArg];
|
||||||
},
|
},
|
||||||
|
|
||||||
'vector-set!': function(arity, returnLabel) {
|
'vector-set!': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
var thirdArg = MACHINE.env[MACHINE.env.length-3];
|
var thirdArg = MACHINE.env[MACHINE.env.length-3];
|
||||||
|
@ -221,17 +221,17 @@ var Primitives = (function() {
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
'symbol?': function(arity, returnLabel) {
|
'symbol?': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return typeof(firstArg) === 'string';
|
return typeof(firstArg) === 'string';
|
||||||
},
|
},
|
||||||
|
|
||||||
'symbol->string': function(arity, returnLabel) {
|
'symbol->string': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg;
|
return firstArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'string-append': function(arity, returnLabel) {
|
'string-append': function(MACHINE, arity) {
|
||||||
var buffer = [];
|
var buffer = [];
|
||||||
var i;
|
var i;
|
||||||
for (i = 0; i < arity; i++) {
|
for (i = 0; i < arity; i++) {
|
||||||
|
@ -240,41 +240,41 @@ var Primitives = (function() {
|
||||||
return buffer.join('');
|
return buffer.join('');
|
||||||
},
|
},
|
||||||
|
|
||||||
'string-length': function(arity, returnLabel) {
|
'string-length': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg.length;
|
return firstArg.length;
|
||||||
},
|
},
|
||||||
|
|
||||||
'box': function(arity, returnLabel) {
|
'box': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var result = [firstArg];
|
var result = [firstArg];
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
'unbox': function(arity, returnLabel) {
|
'unbox': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
return firstArg[0];
|
return firstArg[0];
|
||||||
},
|
},
|
||||||
|
|
||||||
'set-box!': function(arity, returnLabel) {
|
'set-box!': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
firstArg[0] = secondArg;
|
firstArg[0] = secondArg;
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
|
||||||
'void': function(arity, returnLabel) {
|
'void': function(MACHINE, arity) {
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
'eq?': function(arity, returnLabel) {
|
'eq?': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
return firstArg === secondArg;
|
return firstArg === secondArg;
|
||||||
},
|
},
|
||||||
|
|
||||||
'equal?': function(arity, returnLabel) {
|
'equal?': function(MACHINE, arity) {
|
||||||
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
var firstArg = MACHINE.env[MACHINE.env.length-1];
|
||||||
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
var secondArg = MACHINE.env[MACHINE.env.length-2];
|
||||||
var lset = [firstArg], rset = [secondArg];
|
var lset = [firstArg], rset = [secondArg];
|
||||||
|
|
Loading…
Reference in New Issue
Block a user