guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 06/12: Use immediate primcalls when unfolding constructo


From: Andy Wingo
Subject: [Guile-commits] 06/12: Use immediate primcalls when unfolding constructors
Date: Sat, 11 Nov 2017 16:12:25 -0500 (EST)

wingo pushed a commit to branch master
in repository guile.

commit 7bfdd46ea5d915fd878be47d08fb1e781d20d163
Author: Andy Wingo <address@hidden>
Date:   Thu Nov 9 14:14:35 2017 +0100

    Use immediate primcalls when unfolding constructors
    
    * module/language/cps/constructors.scm (inline-vector): Use immediate
      primcalls.
---
 module/language/cps/constructors.scm | 22 +++++++---------------
 1 file changed, 7 insertions(+), 15 deletions(-)

diff --git a/module/language/cps/constructors.scm 
b/module/language/cps/constructors.scm
index ce6ec84..c35ac74 100644
--- a/module/language/cps/constructors.scm
+++ b/module/language/cps/constructors.scm
@@ -61,25 +61,17 @@
        (with-cps out
          (let$ next (initialize vec args (1+ n)))
          (letk knext ($kargs () () ,next))
-         (letv u64)
-         (letk kunbox ($kargs ('idx) (u64)
-                        ($continue knext src
-                          ($primcall 'vector-set! #f (vec u64 arg)))))
-         ($ (with-cps-constants ((idx n))
-              (build-term ($continue kunbox src
-                            ($primcall 'scm->u64 #f (idx))))))))))
+         (build-term
+           ($continue knext src
+             ($primcall 'vector-set!/immediate n (vec arg))))))))
   (with-cps out
     (letv vec)
     (let$ body (initialize vec args 0))
     (letk kalloc ($kargs ('vec) (vec) ,body))
-    ($ (with-cps-constants ((len (length args))
-                            (init #f))
-         (letv u64)
-         (letk kunbox ($kargs ('len) (u64)
-                        ($continue kalloc src
-                          ($primcall 'make-vector #f (u64 init)))))
-         (build-term ($continue kunbox src
-                       ($primcall 'scm->u64 #f (len))))))))
+    ($ (with-cps-constants ((init #f))
+         (build-term
+           ($continue kalloc src
+             ($primcall 'make-vector/immediate (length args) (init))))))))
 
 (define (find-constructor-inliner name)
   (match name



reply via email to

[Prev in Thread] Current Thread [Next in Thread]