~ chicken-core (chicken-5) 06d7fd21a4651b7850381061c8ad9dc8ea0f5835


commit 06d7fd21a4651b7850381061c8ad9dc8ea0f5835
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Thu Jan 20 20:24:28 2011 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Thu Jan 20 20:24:28 2011 +0100

    build-node-graph accepts nodes; substitution in specializer

diff --git a/scrutinizer.scm b/scrutinizer.scm
index ffd62613..be4fbd7b 100755
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -695,5 +695,8 @@
 (define (specialize-node! node template)
   (let ((args (cdr (node-subexpressions node))))
     (define (subst x)
-      ...)				;XXX
-    (copy-node! (subst (build-node-graph template)) node)))
+      (cond ((integer? x) (list-ref args (sub1 x)))
+	    ((not (pair? x)) x)
+	    ((eq? 'quote (car x)) x)	; to handle numeric constants
+	    (else (cons (subst (car x)) (subst (cdr x))))))
+    (copy-node! (build-node-graph (subst template)) node)))
diff --git a/support.scm b/support.scm
index 34cf3400..cb9c100a 100644
--- a/support.scm
+++ b/support.scm
@@ -474,6 +474,7 @@
   (let ([count 0])
     (define (walk x)
       (cond ((symbol? x) (varnode x))
+	    ((node? x) x)
 	    ((not-pair? x) (bomb "bad expression" x))
 	    ((symbol? (car x))
 	     (case (car x)
Trap