~ chicken-core (chicken-5) 546712e8eb12eaa09b5d31173aad7e487dc1dd96


commit 546712e8eb12eaa09b5d31173aad7e487dc1dd96
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Oct 18 03:23:34 2010 -0400
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Mon Oct 18 03:23:34 2010 -0400

    direct fid-call only when not declared not-inline; also done for local values

diff --git a/compiler.scm b/compiler.scm
index e3d499bd..5ccd7894 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -2166,7 +2166,13 @@
 			(cons name
 			      (if varfn
 				  (let* ([varname (first (node-parameters fn))]
-					 [val (and (not (test varname 'unknown)) (test varname 'value))] )
+					 [val (and (not (test varname 'unknown)) 
+						   (not (eq? 
+							 'no
+							 (variable-mark
+							  varname '##compiler#inline)))
+						   (or (test varname 'value)
+						       (test varname 'local-value)))] )
 				    (if (and val (eq? '##core#lambda (node-class val)))
 					(let* ([params (node-parameters val)]
 					       [llist (third params)]
@@ -2176,6 +2182,7 @@
 					       [custom
 						(and refs sites
 						     (= (length refs) (length sites)) 
+						     (test varname 'value)
 						     (proper-list? llist) ) ] )
 					  (when (and name 
 						     custom
Trap