~ chicken-core (chicken-5) 8bf06ffe7406e98eba296dc18c6760880e5340ae


commit 8bf06ffe7406e98eba296dc18c6760880e5340ae
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Sat Aug 22 18:15:10 2015 +0200
Commit:     Peter Bex <peter@more-magic.net>
CommitDate: Sat Aug 22 19:37:26 2015 +0200

    use av instead of stack when restoring args in trampoline

diff --git a/c-backend.scm b/c-backend.scm
index ae99e98d..2230e95e 100644
--- a/c-backend.scm
+++ b/c-backend.scm
@@ -616,11 +616,10 @@
 	    [nsrv '()] )
 
 	(define (restore n)
-	  (do ((i (- n 1) (- i 1))
-	       (j 0 (+ j 1)) )
-	      ((negative? i))
-	    (gen #t "C_word t" i "=C_pick(" j ");") ) 
-	  (gen #t "C_adjust_stack(-" n ");") )
+	  (do ((i 0 (add1 i))
+	       (j (sub1 n) (sub1 j)))
+	      ((>= i n))
+	    (gen #t "C_word t" i "=av[" j "];")))
 
 	(##sys#hash-table-for-each
 	 (lambda (id ll)
Trap