diff options
author | Andy Wingo <wingo@pobox.com> | 2018-04-29 10:22:30 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-04-29 10:22:30 +0200 |
commit | 2eb9c755d1db5d5baedd6594d6385a9b98ad8fcf (patch) | |
tree | 6f0654b667b87cd9adcab000ce975fc47820847c /module/system/vm/assembler.scm | |
parent | 4779a10223078c89db4734857850df9af3d6830d (diff) | |
download | guile-2eb9c755d1db5d5baedd6594d6385a9b98ad8fcf.tar.gz |
Intrinsics for dynamic state instructions
* libguile/intrinsics.c (wind, unwind, push_fluid, pop_fluid)
(fluid_ref): New intrinsics.
(scm_bootstrap_intrinsics): Wire them up.
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Declare new
intrinsics.
* libguile/vm-engine.c (wind, unwind, push_fluid, pop_fluid)
(fluid_ref): Disable these instructions.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add new intrinsics.
* module/system/vm/assembler.scm (wind, unwind, push_fluid, pop_fluid)
(fluid_ref): Assemble as intrinsics.
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index 973179ad4..7144a9e71 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -212,6 +212,12 @@ emit-scm->s64 emit-u64->scm emit-s64->scm + emit-wind + emit-unwind + emit-push-fluid + emit-pop-fluid + emit-fluid-ref + emit-fluid-set! emit-call emit-call-label @@ -238,15 +244,9 @@ emit-toplevel-box emit-module-box emit-prompt - emit-wind - emit-unwind - emit-push-fluid - emit-pop-fluid emit-push-dynamic-state emit-pop-dynamic-state emit-current-thread - emit-fluid-ref - emit-fluid-set! emit-lsh emit-rsh emit-lsh/immediate @@ -1355,6 +1355,12 @@ returned instead." (define-s64<-scm-intrinsic scm->s64) (define-scm<-u64-intrinsic u64->scm) (define-scm<-s64-intrinsic s64->scm) +(define-thread-scm-scm-intrinsic wind) +(define-thread-intrinsic unwind) +(define-thread-scm-scm-intrinsic push-fluid) +(define-thread-intrinsic pop-fluid) +(define-scm<-thread-scm-intrinsic fluid-ref) +(define-thread-scm-scm-intrinsic fluid-set!) (define-macro-assembler (begin-program asm label properties) (emit-label asm label) |