From 6f65432c2a5ed17d9fa4437d7ed76733f6555b7b Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 30 Oct 2018 12:06:47 -0400 Subject: [PATCH] WIP - Cyc-seq --- scheme/cyclone/cps-optimizations.sld | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index 87ad180d..e0be5e00 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -353,7 +353,8 @@ (lambda-body (lambda->exp define-body)) (fv (filter (lambda (v) - (not (prim? v))) + (and (not (equal? 'Cyc-seq v)) + (not (prim? v)))) (free-vars expr))) ) ;(trace:error `(JAE DEBUG ,(define->var expr) ,fv)) @@ -1679,7 +1680,7 @@ (body (ast:lambda-body exp)) (new-free-vars (difference - (difference (free-vars body) (ast:lambda-formals->list exp)) + (difference (free-vars body) (cons 'Cyc-seq (ast:lambda-formals->list exp))) globals)) (formals (list->lambda-formals (cons new-self-var (ast:lambda-formals->list exp)) @@ -1725,6 +1726,9 @@ (let ((fn (car exp)) (args (map cc (cdr exp)))) (cond + ((tagged-list? 'Cyc-seq exp) + (cons 'Cyc-seq + (map cc (cdr exp)))) ((ast:lambda? fn) (cond ;; If the lambda argument is not used, flag so the C code is @@ -1752,7 +1756,7 @@ (let* ((body (ast:lambda-body fn)) (new-free-vars (difference - (difference (free-vars body) (ast:lambda-formals->list fn)) + (difference (free-vars body) (cons 'Cyc-seq (ast:lambda-formals->list fn))) globals)) (new-free-vars? (> (length new-free-vars) 0))) (if new-free-vars?