summaryrefslogtreecommitdiff
path: root/module/system/vm/assembler.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-04-10 12:05:01 +0200
committerAndy Wingo <wingo@pobox.com>2018-04-10 12:14:47 +0200
commit2964abad053f3793dc84e00605b6c06c57975825 (patch)
treebaf0e4006dddc19564ab9ca0e98c860f650c3a48 /module/system/vm/assembler.scm
parent0ae1e943d8fb9dd4417994f8bc5d128062cac0d5 (diff)
downloadguile-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.scm3
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)