From d36f9be25b1ed212b125871d21bb11fe6e41c959 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 11 May 2016 22:18:28 -0400 Subject: [PATCH] WIP --- cyclone.scm | 17 +++++++++++------ scheme/cyclone/optimize-cps.sld | 14 ++++++++------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/cyclone.scm b/cyclone.scm index b1c2ea0e..2aa64645 100644 --- a/cyclone.scm +++ b/cyclone.scm @@ -238,12 +238,17 @@ ;; phase 5 - common subexpression elimination ;; TODO: re-run phases again until program is stable (less than n opts made, more than r rounds performed, etc) ;; END CPS optimization - (set! input-program - (map - cps-optimize-01 - input-program)) - (trace:info "---------------- after cps optimizations:") - (trace:info input-program) ;pretty-print + +; (analyze-cps input-program) +; (trace:info "---------------- cps analysis db:") +; (trace:info (adb:get-db)) + +; (set! input-program +; (map +; cps-optimize-01 +; input-program)) +; (trace:info "---------------- after cps optimizations:") +; (trace:info input-program) ;pretty-print (set! input-program (map diff --git a/scheme/cyclone/optimize-cps.sld b/scheme/cyclone/optimize-cps.sld index e1713319..98dcf43c 100644 --- a/scheme/cyclone/optimize-cps.sld +++ b/scheme/cyclone/optimize-cps.sld @@ -30,6 +30,7 @@ adb:get adb:get/default adb:set! + adb:get-db ;; Variables adb:make-var %adb:make-var @@ -48,6 +49,7 @@ ) (begin (define *adb* (make-hash-table)) + (define (adb:get-db) *adb*) ;(define *adb* #f) ;(make-hash-table)) ;(define (adb:init!) ; ;(set! *adb* (make-hash-table))) @@ -103,15 +105,15 @@ (adbv:set-ref-by! var (cons lid (adbv:ref-by var))) )) ((define? exp) - (let ((var (adb:get/default exp (adb:make-var)))) + (let ((var (adb:get/default (define->var exp) (adb:make-var)))) ;; TODO: - 'TODO - )) + + (analyze (define->exp exp) lid))) ((set!? exp) - (let ((var (adb:get/default exp (adb:make-var)))) + (let ((var (adb:get/default (set!->var exp) (adb:make-var)))) ;; TODO: - 'TODO - )) + + (analyze (set!->exp exp) lid))) ((if? exp) `(if ,(analyze (if->condition exp) lid) ,(analyze (if->then exp) lid) ,(analyze (if->else exp) lid)))