~ chicken-core (chicken-5) 6f9046549ad5c822175dde9ce0ff0f1318796b9f
commit 6f9046549ad5c822175dde9ce0ff0f1318796b9f
Author: felix <bunny351@gmail.com>
AuthorDate: Mon Jun 7 15:30:06 2010 +0200
Commit: felix <bunny351@gmail.com>
CommitDate: Mon Jun 7 15:30:06 2010 +0200
global inlining of externally defined procedures ignores inline-limit
diff --git a/optimizer.scm b/optimizer.scm
index 5d287621..4e52ebd2 100644
--- a/optimizer.scm
+++ b/optimizer.scm
@@ -309,7 +309,8 @@
(decompose-lambda-list
llist
(lambda (vars argc rest)
- (let ([ifid (first lparams)])
+ (let ((ifid (first lparams))
+ (external (node? (variable-mark var '##compiler#inline-global))))
(cond [(and inline-locally
(test var 'inlinable)
(not (test ifid 'inline-target)) ; inlinable procedure has changed
@@ -317,10 +318,10 @@
((yes) #t)
((no) #f)
(else
- (< (fourth lparams) inline-max-size) ) ))
+ (or external (< (fourth lparams) inline-max-size)))))
(debugging
'i
- (if (node? (variable-mark var '##compiler#inline-global))
+ (if external
"global inlining"
"inlining")
var ifid (fourth lparams))
Trap