summaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2017-11-09 14:14:35 +0100
committerAndy Wingo <wingo@pobox.com>2017-11-11 22:08:14 +0100
commit7bfdd46ea5d915fd878be47d08fb1e781d20d163 (patch)
tree8f7e3810ee0b4b33511159a35f84024857d59b00 /module
parentb27065fdf27aa43fa8b31ba16b6c691064efe762 (diff)
downloadguile-7bfdd46ea5d915fd878be47d08fb1e781d20d163.tar.gz
Use immediate primcalls when unfolding constructors
* module/language/cps/constructors.scm (inline-vector): Use immediate primcalls.
Diffstat (limited to 'module')
-rw-r--r--module/language/cps/constructors.scm22
1 files changed, 7 insertions, 15 deletions
diff --git a/module/language/cps/constructors.scm b/module/language/cps/constructors.scm
index ce6ec84b2..c35ac7475 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