summaryrefslogtreecommitdiff
path: root/module/language/tree-il/peval.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-05-28 12:06:30 -0400
committerAndy Wingo <wingo@pobox.com>2013-06-10 22:46:08 +0200
commit007f671afc4a0deb4e9b3e91f7b908d7be5fef44 (patch)
treebb5b6a0eb67e3d0d52d268241fe61045f4ea0f2f /module/language/tree-il/peval.scm
parent99b4da8fb2098762c9d51ee5cc92b1db971bbe1d (diff)
downloadguile-007f671afc4a0deb4e9b3e91f7b908d7be5fef44.tar.gz
Implement tree-il-fold in terms of make-tree-il-folder.
* module/language/tree-il.scm (tree-il-fold): Implement using make-tree-il-folder. This is an incompatible change: there is no more "leaf" procedure, and tree-il-fold only works on tree-il and not lists. * module/language/tree-il/analyze.scm (<tree-analysis>, analyze-tree): Adapt to tree-il-fold change, losing the "leaf" handler. (unused-variable-analysis, unused-toplevel-analysis) (unbound-variable-analysis, arity-analysis): Adapt to tree-analysis change. * module/language/tree-il/canonicalize.scm (tree-il-any) * module/language/tree-il/cse.scm (build-assigned-var-table) * module/language/tree-il/peval.scm (tree-il-any, build-var-table) (peval): Adapt to tree-il-fold change. * test-suite/tests/tree-il.test ("tree-il-fold"): Adapt tests for new interface and expectations.
Diffstat (limited to 'module/language/tree-il/peval.scm')
-rw-r--r--module/language/tree-il/peval.scm8
1 files changed, 0 insertions, 8 deletions
diff --git a/module/language/tree-il/peval.scm b/module/language/tree-il/peval.scm
index d7d561d4f..3755380ec 100644
--- a/module/language/tree-il/peval.scm
+++ b/module/language/tree-il/peval.scm
@@ -79,9 +79,6 @@
(tree-il-fold (lambda (exp res)
(let ((res (proc exp)))
(if res (k res) #f)))
- (lambda (exp res)
- (let ((res (proc exp)))
- (if res (k res) #f)))
(lambda (exp res) #f)
#f exp)))
@@ -132,9 +129,6 @@
(let ((var (cdr (vhash-assq gensym res))))
(set-var-refcount! var (1+ (var-refcount var)))
res))
- (_ res)))
- (lambda (exp res)
- (match exp
(($ <lambda-case> src req opt rest kw init gensyms body alt)
(fold (lambda (name sym res)
(vhash-consq sym (make-var name sym 0 #f) res))
@@ -666,8 +660,6 @@ top-level bindings from ENV and return the resulting expression."
(define (small-expression? x limit)
(let/ec k
(tree-il-fold
- (lambda (x res) ; leaf
- (1+ res))
(lambda (x res) ; down
(1+ res))
(lambda (x res) ; up