~ 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