diff options
author | Andy Wingo <wingo@pobox.com> | 2018-05-13 10:23:28 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-05-14 14:04:54 +0200 |
commit | fb344a25d5fab1714eb1d5ca66bad96fb4834855 (patch) | |
tree | 496697ce8faf53d003e94b52fd45339eac66b810 /module/system/vm/assembler.scm | |
parent | 16a996f052f381d915288bc4f39dfc4c21930295 (diff) | |
download | guile-fb344a25d5fab1714eb1d5ca66bad96fb4834855.tar.gz |
Add intrinsics for module operations
* libguile/intrinsics.c (scm_bootstrap_intrinsics):
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS):
* module/system/vm/assembler.scm (resolve-module, lookup): New intrinsics.
* module/language/cps/compile-bytecode: Add cases for primcalls
corresponding to new intrinsics.
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index 59434295e..56644fdf4 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -224,6 +224,8 @@ emit-rsh emit-lsh/immediate emit-rsh/immediate + emit-resolve-module + emit-lookup emit-call emit-call-label @@ -1336,6 +1338,9 @@ returned instead." (define-syntax-rule (define-scm<-scm-u64-intrinsic name) (define-macro-assembler (name asm dst a b) (emit-call-scm<-scm-u64 asm dst a b (intrinsic-name->index 'name)))) +(define-syntax-rule (define-scm<-scm-bool-intrinsic name) + (define-macro-assembler (name asm dst a b) + (emit-call-scm<-scm-uimm asm dst a (if b 1 0) (intrinsic-name->index 'name)))) (define-scm<-scm-scm-intrinsic add) (define-scm<-scm-uimm-intrinsic add/immediate) @@ -1373,6 +1378,8 @@ returned instead." (define-scm<-scm-u64-intrinsic rsh) (define-scm<-scm-uimm-intrinsic lsh/immediate) (define-scm<-scm-uimm-intrinsic rsh/immediate) +(define-scm<-scm-bool-intrinsic resolve-module) +(define-scm<-scm-scm-intrinsic lookup) (define-macro-assembler (begin-program asm label properties) (emit-label asm label) |