mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-14 23:50:19 +02:00
push and pop dynamic state via intrinsics
* libguile/intrinsics.c (push_dynamic_state, pop_dynamic_state): New intrinsics. (scm_bootstrap_intrinsics): Add new intrinsics. * libguile/intrinsics.h: Declare new intrinsics. * libguile/vm-engine.c (call-thread-scm): New intrinsic caller. (push-dynamic-state, pop-dynamic-state): Disable. * module/language/cps/reify-primitives.scm (compute-known-primitives): Add new intrinsics. * module/system/vm/assembler.scm (push-dynamic-state) (pop-dynamic-state): Emit as intrinsics.
This commit is contained in:
parent
2eb9c755d1
commit
89fda6da60
5 changed files with 49 additions and 19 deletions
|
@ -218,6 +218,8 @@
|
|||
emit-pop-fluid
|
||||
emit-fluid-ref
|
||||
emit-fluid-set!
|
||||
emit-push-dynamic-state
|
||||
emit-pop-dynamic-state
|
||||
|
||||
emit-call
|
||||
emit-call-label
|
||||
|
@ -244,8 +246,6 @@
|
|||
emit-toplevel-box
|
||||
emit-module-box
|
||||
emit-prompt
|
||||
emit-push-dynamic-state
|
||||
emit-pop-dynamic-state
|
||||
emit-current-thread
|
||||
emit-lsh
|
||||
emit-rsh
|
||||
|
@ -1321,12 +1321,15 @@ returned instead."
|
|||
(define-syntax-rule (define-scm<-s64-intrinsic name)
|
||||
(define-macro-assembler (name asm dst src)
|
||||
(emit-call-scm<-s64 asm dst src (intrinsic-name->index 'name))))
|
||||
(define-syntax-rule (define-thread-scm-scm-intrinsic name)
|
||||
(define-macro-assembler (name asm a b)
|
||||
(emit-call-thread-scm-scm asm a b (intrinsic-name->index 'name))))
|
||||
(define-syntax-rule (define-thread-intrinsic name)
|
||||
(define-macro-assembler (name asm)
|
||||
(emit-call-thread asm (intrinsic-name->index 'name))))
|
||||
(define-syntax-rule (define-thread-scm-intrinsic name)
|
||||
(define-macro-assembler (name asm a)
|
||||
(emit-call-thread-scm asm a (intrinsic-name->index 'name))))
|
||||
(define-syntax-rule (define-thread-scm-scm-intrinsic name)
|
||||
(define-macro-assembler (name asm a b)
|
||||
(emit-call-thread-scm-scm asm a b (intrinsic-name->index 'name))))
|
||||
(define-syntax-rule (define-scm<-thread-scm-intrinsic name)
|
||||
(define-macro-assembler (name asm dst src)
|
||||
(emit-call-scm<-thread-scm asm dst src (intrinsic-name->index 'name))))
|
||||
|
@ -1361,6 +1364,8 @@ returned instead."
|
|||
(define-thread-intrinsic pop-fluid)
|
||||
(define-scm<-thread-scm-intrinsic fluid-ref)
|
||||
(define-thread-scm-scm-intrinsic fluid-set!)
|
||||
(define-thread-scm-intrinsic push-dynamic-state)
|
||||
(define-thread-intrinsic pop-dynamic-state)
|
||||
|
||||
(define-macro-assembler (begin-program asm label properties)
|
||||
(emit-label asm label)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue