~ chicken-core (chicken-5) 28810cd12cfe27dee5765af2d9960665626392c1


commit 28810cd12cfe27dee5765af2d9960665626392c1
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Tue Aug 23 11:17:16 2011 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Tue Aug 23 11:17:16 2011 +0200

    slight simplification in handling of ##compiler#pure mark

diff --git a/optimizer.scm b/optimizer.scm
index 48b3a86e..e0f4214f 100644
--- a/optimizer.scm
+++ b/optimizer.scm
@@ -315,30 +315,28 @@
 			     llist args (first (node-subexpressions lval)) #f db
 			     void)
 			    fids gae) ) )
-			((variable-mark var '##compiler#pure) =>
-			 (lambda (pb)
-			   (or (and-let* ((k (car args))
-					  ((or (eq? #t pb) 
-					       (let ((im (variable-mark var '##compiler#intrinsic)))
-						 (or (eq? im 'internal) (eq? im pb)))))
-					  ((eq? '##core#variable (node-class k)))
-					  (kvar (first (node-parameters k)))
-					  (lval (and (not (test kvar 'unknown)) (test kvar 'value))) 
-					  ((eq? '##core#lambda (node-class lval)))
-					  (llist (third (node-parameters lval)))
-					  ((or (test (car llist) 'unused)
-					       (and (not (test (car llist) 'references))
-						    (not (test (car llist) 'assigned)))))
-					  ((not (any (cut expression-has-side-effects? <> db) (cdr args) ))))
-				 (let ((info (and (pair? (cdr params)) (second params))))
-				   (debugging 
-				    'o
-				    "removed call to pure procedure with unused result"
-				    (or (source-info->string info) var)))
-				 (make-node
-				  '##core#call (list #t)
-				  (list k (make-node '##core#undefined '() '())) ) ) 
-			       (walk-generic n class params subs fids gae #f)) ) )
+			((variable-mark var '##compiler#pure)
+			 (or (and-let* ((k (car args))
+					((eq? '##core#variable (node-class k)))
+					(kvar (first (node-parameters k)))
+					(lval (and (not (test kvar 'unknown)) 
+						   (test kvar 'value))) 
+					((eq? '##core#lambda (node-class lval)))
+					(llist (third (node-parameters lval)))
+					((or (test (car llist) 'unused)
+					     (and (not (test (car llist) 'references))
+						  (not (test (car llist) 'assigned)))))
+					((not (any (cut expression-has-side-effects? <> db)
+						   (cdr args) ))))
+			       (let ((info (and (pair? (cdr params)) (second params))))
+				 (debugging 
+				  'o
+				  "removed call to pure procedure with unused result"
+				  (or (source-info->string info) var)))
+			       (make-node
+				'##core#call (list #t)
+				(list k (make-node '##core#undefined '() '())) ) ) 
+			     (walk-generic n class params subs fids gae #f)) )
 			((and lval
 			      (eq? '##core#lambda (node-class lval)))
 			 (let* ([lparams (node-parameters lval)]
Trap