removing unnecessary label

This commit is contained in:
Danny Yoo 2011-03-25 23:05:50 -04:00
parent fab12bcc83
commit d758585c85
4 changed files with 44 additions and 49 deletions

View File

@ -132,7 +132,7 @@ EOF
[(MakeCompiledProcedure? op)
(list (MakeCompiledProcedure-label op))]
[(ApplyPrimitiveProcedure? op)
(list (ApplyPrimitiveProcedure-label op))]
empty]
[(GetControlStackLabel? op)
empty]
[(CaptureEnvironment? op)
@ -386,9 +386,8 @@ EOF
(assemble-display-name (MakeCompiledProcedure-display-name op)))]
[(ApplyPrimitiveProcedure? op)
(format "MACHINE.proc(~a, ~a)"
(ApplyPrimitiveProcedure-arity op)
(ApplyPrimitiveProcedure-label op))]
(format "MACHINE.proc(MACHINE, ~a)"
(ApplyPrimitiveProcedure-arity op))]
[(GetControlStackLabel? op)
(format "MACHINE.control[MACHINE.control.length-1].label")]

View File

@ -482,7 +482,7 @@
;; the appropriate spot on the stack. This takes into account the popenviroment
;; that happens right afterwards.
(adjust-target-depth target n)
(make-ApplyPrimitiveProcedure n after-call))
(make-ApplyPrimitiveProcedure n))
,(make-PopEnvironment n 0))))
after-call))))

View File

@ -139,11 +139,7 @@
;; 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
;; to that primitive.
;;
;; If the primitive needs to capture the current continuation, it can get the
;; immediate address at label.
(define-struct: ApplyPrimitiveProcedure ([arity : Natural]
[label : Symbol])
(define-struct: ApplyPrimitiveProcedure ([arity : Natural])
#:transparent)

View File

@ -34,16 +34,16 @@ var Closure = function(label, arity, closedVals, displayName) {
var Primitives = (function() {
var NULL = [];
return {
'display': function(arity, returnLabel) {
'display': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
MACHINE.params.currentDisplayer(firstArg);
},
'newline': function(arity, returnLabel) {
'newline': function(MACHINE, arity) {
MACHINE.params.currentDisplayer("\n");
},
'displayln': function(arity, returnLabel){
'displayln': function(MACHINE, arity){
var firstArg = MACHINE.env[MACHINE.env.length-1];
MACHINE.params.currentDisplayer(firstArg);
MACHINE.params.currentDisplayer("\n");
@ -53,68 +53,68 @@ var Primitives = (function() {
'e' : Math.E,
'=': function(arity, returnLabel) {
'=': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg === secondArg;
},
'<': function(arity, returnLabel) {
'<': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg < secondArg;
},
'>': function(arity, returnLabel) {
'>': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg > secondArg;
},
'<=': function(arity, returnLabel) {
'<=': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg <= secondArg;
},
'>=': function(arity, returnLabel) {
'>=': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg >= secondArg;
},
'+': function(arity, returnLabel) {
'+': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg + secondArg;
},
'*': function(arity, returnLabel) {
'*': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg * secondArg;
},
'-': function(arity, returnLabel) {
'-': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg - secondArg;
},
'/': function(arity, returnLabel) {
'/': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg / secondArg;
},
'cons': function(arity, returnLabel) {
'cons': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return [firstArg, secondArg];
},
'list': function(arity, returnLabel) {
'list': function(MACHINE, arity) {
var result = NULL;
for (var i = 0; i < arity; i++) {
result = [MACHINE.env[MACHINE.env.length - (arity - i)],
@ -123,62 +123,62 @@ var Primitives = (function() {
return result;
},
'car': function(arity, returnLabel) {
'car': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg[0];
},
'cdr': function(arity, returnLabel) {
'cdr': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg[1];
},
'pair?': function(arity, returnLabel) {
'pair?': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return (typeof(firstArg) == 'object' &&
firstArg.length === 2);
},
'set-car!': function(arity, returnLabel) {
'set-car!': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
firstArg[0] = secondArg;
},
'set-cdr!': function(arity, returnLabel) {
'set-cdr!': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
firstArg[1] = secondArg;
},
'not': function(arity, returnLabel) {
'not': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return (!firstArg);
},
'null' : NULL,
'null?': function(arity, returnLabel) {
'null?': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg === NULL;
},
'add1': function(arity, returnLabel) {
'add1': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg + 1;
},
'sub1': function(arity, returnLabel) {
'sub1': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg - 1;
},
'zero?': function(arity, returnLabel) {
'zero?': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg === 0;
},
'vector': function(arity, returnLabel) {
'vector': function(MACHINE, arity) {
var i;
var result = [];
for (i = 0; i < arity; i++) {
@ -187,7 +187,7 @@ var Primitives = (function() {
return result;
},
'vector->list': function(arity, returnLabel) {
'vector->list': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var i;
var result = NULL;
@ -197,7 +197,7 @@ var Primitives = (function() {
return result;
},
'list->vector': function(arity, returnLabel) {
'list->vector': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var result = [];
while (firstArg !== NULL) {
@ -207,13 +207,13 @@ var Primitives = (function() {
return result;
},
'vector-ref': function(arity, returnLabel) {
'vector-ref': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg[secondArg];
},
'vector-set!': function(arity, returnLabel) {
'vector-set!': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
var thirdArg = MACHINE.env[MACHINE.env.length-3];
@ -221,17 +221,17 @@ var Primitives = (function() {
return null;
},
'symbol?': function(arity, returnLabel) {
'symbol?': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return typeof(firstArg) === 'string';
},
'symbol->string': function(arity, returnLabel) {
'symbol->string': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg;
},
'string-append': function(arity, returnLabel) {
'string-append': function(MACHINE, arity) {
var buffer = [];
var i;
for (i = 0; i < arity; i++) {
@ -240,41 +240,41 @@ var Primitives = (function() {
return buffer.join('');
},
'string-length': function(arity, returnLabel) {
'string-length': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg.length;
},
'box': function(arity, returnLabel) {
'box': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var result = [firstArg];
return result;
},
'unbox': function(arity, returnLabel) {
'unbox': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
return firstArg[0];
},
'set-box!': function(arity, returnLabel) {
'set-box!': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
firstArg[0] = secondArg;
return;
},
'void': function(arity, returnLabel) {
'void': function(MACHINE, arity) {
return;
},
'eq?': function(arity, returnLabel) {
'eq?': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
return firstArg === secondArg;
},
'equal?': function(arity, returnLabel) {
'equal?': function(MACHINE, arity) {
var firstArg = MACHINE.env[MACHINE.env.length-1];
var secondArg = MACHINE.env[MACHINE.env.length-2];
var lset = [firstArg], rset = [secondArg];