diff options
author | Andy Wingo <wingo@pobox.com> | 2018-04-10 12:05:01 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-04-10 12:14:47 +0200 |
commit | 2964abad053f3793dc84e00605b6c06c57975825 (patch) | |
tree | baf0e4006dddc19564ab9ca0e98c860f650c3a48 /module/system/vm/assembler.scm | |
parent | 0ae1e943d8fb9dd4417994f8bc5d128062cac0d5 (diff) | |
download | guile-2964abad053f3793dc84e00605b6c06c57975825.tar.gz |
Explode "string-set!"
* module/language/cps/effects-analysis.scm (string-ref): Remove effects
declaration, given that the primitive is exploded now.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add string-set!.
* libguile/vm-engine.c (string-set!): Disable opcode.
* module/language/cps/types.scm (string-ref, string-set!): Remove type
checker and inferrers for string-ref and string-set!, as both are
exploded. In the case of string-set! there are still type-check
effects in the intrinsic call but they can't be elided by the checker,
as we don't track when strings are read-only.
* module/language/tree-il/compile-cps.scm (ensure-char): New helper.
(string-set!): New primcall exploded converter.
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index bb1b5a311..ffc913826 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -195,6 +195,7 @@ emit-logand emit-logior emit-logxor + emit-string-set! emit-call emit-call-label @@ -230,7 +231,6 @@ emit-current-thread emit-fluid-ref emit-fluid-set! - emit-string-set! emit-string->number emit-string->symbol emit-symbol->keyword @@ -1297,6 +1297,7 @@ returned instead." (define-scm<-scm-scm-intrinsic logand) (define-scm<-scm-scm-intrinsic logior) (define-scm<-scm-scm-intrinsic logxor) +(define-scm-u64-u64-intrinsic string-set!) (define-macro-assembler (begin-program asm label properties) (emit-label asm label) |