~ 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