diff options
author | Andy Wingo <wingo@pobox.com> | 2017-11-09 14:14:35 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2017-11-11 22:08:14 +0100 |
commit | 7bfdd46ea5d915fd878be47d08fb1e781d20d163 (patch) | |
tree | 8f7e3810ee0b4b33511159a35f84024857d59b00 /module | |
parent | b27065fdf27aa43fa8b31ba16b6c691064efe762 (diff) | |
download | guile-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.scm | 22 |
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 |