From 7adb9bd0271d8e3c09ead5261a712874d995a407 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 12 May 2016 21:42:06 -0400 Subject: [PATCH] Bug fixes and enhancements --- scheme/cyclone/optimize-cps.sld | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scheme/cyclone/optimize-cps.sld b/scheme/cyclone/optimize-cps.sld index c139ef8f..8db16228 100644 --- a/scheme/cyclone/optimize-cps.sld +++ b/scheme/cyclone/optimize-cps.sld @@ -41,6 +41,8 @@ adbv:defined-by adbv:set-defined-by! adbv:assigned adbv:set-assigned! adbv:assigned-locally adbv:set-assigned-locally! + adbv:ref-by + adbv:set-ref-by! ;; Analyze functions adb:make-fnc %adb:make-fnc @@ -81,6 +83,7 @@ (define (analyze-cps exp) (define (analyze exp lid) +;(trace:error `(analyze ,lid ,exp)) (cond ; Core forms: ((ast:lambda? exp) @@ -93,7 +96,7 @@ (lambda (arg) (let ((var (adb:get/default arg (adb:make-var)))) (adbv:set-global! var #f) - (adbv:set-defined-by! var lid) + (adbv:set-defined-by! var id) (adb:set! arg var))) (ast:lambda-formals->list exp)) (for-each @@ -107,11 +110,14 @@ ((define? exp) (let ((var (adb:get/default (define->var exp) (adb:make-var)))) ;; TODO: + (adbv:set-defined-by! var lid) + (adbv:set-ref-by! var (cons lid (adbv:ref-by var))) (analyze (define->exp exp) lid))) ((set!? exp) (let ((var (adb:get/default (set!->var exp) (adb:make-var)))) ;; TODO: + (adbv:set-ref-by! var (cons lid (adbv:ref-by var))) (analyze (set!->exp exp) lid))) ((if? exp) `(if ,(analyze (if->condition exp) lid) @@ -121,7 +127,7 @@ ; Application: ((app? exp) (map (lambda (e) - (analyze-cps e lid)) + (analyze e lid)) exp)) ;TODO: ((app? exp) (map (lambda (e) (wrap-mutables e globals)) exp))