diff options
Diffstat (limited to 'lib/csc/cps.csc')
| -rw-r--r-- | lib/csc/cps.csc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/csc/cps.csc b/lib/csc/cps.csc index a3e829b..4fed47c 100644 --- a/lib/csc/cps.csc +++ b/lib/csc/cps.csc @@ -151,7 +151,7 @@ (define argvec (new-ref)) (define nargs (length args)) (make-lambda (list argvec) #f - (make-if (make-call-builtin 'int=? (list (make-call-builtin 'peek (list argvec (make-constant 1))) + (make-if (make-call-builtin 'eq? (list (make-call-builtin 'peek (list argvec (make-constant 1))) (make-constant nargs))) (loop for arg in (reverse args) for i downfrom (+ 1 nargs) @@ -294,6 +294,8 @@ (to-cps producer (lambda (p) (make-apply p (list consumer-func argvec))))))))) + ((% %call-builtin 'apply (proc args)) + (to-cps (make-call proc (list args)) continuation)) ((% %call-builtin op args) (define returns-value? (not (memq op '(poke exit)))) (loop for arg in (reverse args) |
