From a6cc263237adf0c0896eb41463b64564583b9f8b Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 11 May 2016 21:43:35 -0400 Subject: [PATCH] Building out --- scheme/cyclone/optimize-cps.sld | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/scheme/cyclone/optimize-cps.sld b/scheme/cyclone/optimize-cps.sld index a3a118e2..e1713319 100644 --- a/scheme/cyclone/optimize-cps.sld +++ b/scheme/cyclone/optimize-cps.sld @@ -62,9 +62,10 @@ (defined-by adbv:defined-by adbv:set-defined-by!) (assigned adbv:assigned adbv:set-assigned!) (assigned-locally adbv:assigned-locally adbv:set-assigned-locally!) + (ref-by adbv:ref-by adbv:set-ref-by!) ) (define (adb:make-var) - (%adb:make-var #f #f #f #f)) + (%adb:make-var #f #f #f #t '())) (define-record-type (%adb:make-fnc simple unused-params) @@ -97,15 +98,20 @@ (lambda (expr) (analyze expr id)) (ast:lambda-body)))) -;TODO: ((ref? exp) (if (and (not (member exp globals)) -;TODO: (is-mutable? exp)) -;TODO: `(cell-get ,exp) -;TODO: exp)) -;TODO: ((set!? exp) `(,(if (member (set!->var exp) globals) -;TODO: 'set-global! -;TODO: 'set-cell!) -;TODO: ,(set!->var exp) -;TODO: ,(wrap-mutables (set!->exp exp) globals))) + ((ref? exp) + (let ((var (adb:get/default exp (adb:make-var)))) + (adbv:set-ref-by! var (cons lid (adbv:ref-by var))) + )) + ((define? exp) + (let ((var (adb:get/default exp (adb:make-var)))) + ;; TODO: + 'TODO + )) + ((set!? exp) + (let ((var (adb:get/default exp (adb:make-var)))) + ;; TODO: + 'TODO + )) ((if? exp) `(if ,(analyze (if->condition exp) lid) ,(analyze (if->then exp) lid) ,(analyze (if->else exp) lid)))