mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 01:00:20 +02:00
free-ref, free-set take immediate parameters
* module/language/cps/closure-conversion.scm (convert-one): * module/language/cps/compile-bytecode.scm (compile-function): * module/language/cps/effects-analysis.scm (define-primitive-effects*) (expression-effects, primitive-effects): Only fall back to passing constant table if the immediate parameter is false. Adapt closure effects analysis. * module/language/cps/slot-allocation.scm (compute-needs-slot): Remove special cases for free-ref/free-set!.
This commit is contained in:
parent
6be04684e6
commit
2f45cfcb9c
4 changed files with 21 additions and 33 deletions
|
@ -151,9 +151,8 @@
|
|||
(emit-define! asm (from-sp dst) (from-sp (slot sym))))
|
||||
(($ $primcall 'resolve (bound?) (name))
|
||||
(emit-resolve asm (from-sp dst) bound? (from-sp (slot name))))
|
||||
(($ $primcall 'free-ref #f (closure idx))
|
||||
(emit-free-ref asm (from-sp dst) (from-sp (slot closure))
|
||||
(constant idx)))
|
||||
(($ $primcall 'free-ref idx (closure))
|
||||
(emit-free-ref asm (from-sp dst) (from-sp (slot closure)) idx))
|
||||
(($ $primcall 'vector-ref #f (vector index))
|
||||
(emit-vector-ref asm (from-sp dst) (from-sp (slot vector))
|
||||
(from-sp (slot index))))
|
||||
|
@ -302,9 +301,9 @@
|
|||
(emit-j asm (forward-label khandler-body))))))
|
||||
(($ $primcall 'cache-current-module! (scope) (mod))
|
||||
(emit-cache-current-module! asm (from-sp (slot mod)) scope))
|
||||
(($ $primcall 'free-set! #f (closure idx value))
|
||||
(($ $primcall 'free-set! idx (closure value))
|
||||
(emit-free-set! asm (from-sp (slot closure)) (from-sp (slot value))
|
||||
(constant idx)))
|
||||
idx))
|
||||
(($ $primcall 'box-set! #f (box value))
|
||||
(emit-box-set! asm (from-sp (slot box)) (from-sp (slot value))))
|
||||
(($ $primcall 'struct-set! #f (struct index value))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue