summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-04-10 13:33:13 +0200
committerAndy Wingo <wingo@pobox.com>2018-04-10 13:33:13 +0200
commit935598515407376a42c7e3f6a28437ed62c660f8 (patch)
treec0773ae7fedcd1a92379c9955cad3f5787576506
parent880d68ea22e056917b60f32787a80a5ddd28411b (diff)
Remove integer->char op
* libguile/vm-engine.c (integer->char): Remove unused op. * module/language/cps/types.scm: * module/language/cps/effects-analysis.scm: * module/language/cps/compile-bytecode.scm (compile-function): Remove integer->char cases. * module/system/vm/assembler.scm: Remove emit-integer->char.
-rw-r--r--libguile/vm-engine.c22
-rw-r--r--module/language/cps/compile-bytecode.scm2
-rw-r--r--module/language/cps/effects-analysis.scm1
-rw-r--r--module/language/cps/types.scm5
-rw-r--r--module/system/vm/assembler.scm1
5 files changed, 1 insertions, 30 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index 73b9914d8..0a0df20e2 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -2837,32 +2837,12 @@ VM_NAME (scm_i_thread *thread, struct scm_vm *vp,
VM_DEFINE_OP (172, unused_172, NULL, NOP)
VM_DEFINE_OP (173, unused_173, NULL, NOP)
VM_DEFINE_OP (174, unused_174, NULL, NOP)
+ VM_DEFINE_OP (175, unused_175, NULL, NOP)
{
vm_error_bad_instruction (op);
abort (); /* never reached */
}
- /* integer->char a:12 b:12
- *
- * Convert the U64 value in B to a Scheme character, and return it in
- * A.
- */
- VM_DEFINE_OP (175, integer_to_char, "integer->char", OP1 (X8_S12_S12) | OP_DST)
- {
- scm_t_uint16 dst, src;
- scm_t_uint64 x;
-
- UNPACK_12_12 (op, dst, src);
- x = SP_REF_U64 (src);
-
- VM_ASSERT (x <= (scm_t_uint64) SCM_CODEPOINT_MAX,
- vm_error_out_of_range_uint64 ("integer->char", x));
-
- SP_SET (dst, SCM_MAKE_ITAG8 ((scm_t_bits) (scm_t_wchar) x, scm_tc8_char));
-
- NEXT (1);
- }
-
/* char->integer a:12 b:12
*
* Untag the character in B to U64, and return it in A.
diff --git a/module/language/cps/compile-bytecode.scm b/module/language/cps/compile-bytecode.scm
index a5488d45f..aa8c1206c 100644
--- a/module/language/cps/compile-bytecode.scm
+++ b/module/language/cps/compile-bytecode.scm
@@ -177,8 +177,6 @@
idx))
(($ $primcall 'char->integer #f (src))
(emit-char->integer asm (from-sp dst) (from-sp (slot src))))
- (($ $primcall 'integer->char #f (src))
- (emit-integer->char asm (from-sp dst) (from-sp (slot src))))
(($ $primcall 'add/immediate y (x))
(emit-add/immediate asm (from-sp dst) (from-sp (slot x)) y))
(($ $primcall 'sub/immediate y (x))
diff --git a/module/language/cps/effects-analysis.scm b/module/language/cps/effects-analysis.scm
index 98eee02ee..7b6567167 100644
--- a/module/language/cps/effects-analysis.scm
+++ b/module/language/cps/effects-analysis.scm
@@ -545,7 +545,6 @@ the LABELS that are clobbered by the effects of LABEL."
(define-primitive-effects
((untag-char _))
((tag-char _))
- ((integer->char _) &type-check)
((char->integer _) &type-check))
;; Atomics are a memory and a compiler barrier; they cause all effects
diff --git a/module/language/cps/types.scm b/module/language/cps/types.scm
index f0313b929..1f24e023f 100644
--- a/module/language/cps/types.scm
+++ b/module/language/cps/types.scm
@@ -1605,11 +1605,6 @@ minimum, and maximum."
(define-type-inferrer (tag-char u64 result)
(define! result &char 0 (min (&max u64) *max-codepoint*)))
-(define-simple-type-checker (integer->char (&u64 0 *max-codepoint*)))
-(define-type-inferrer (integer->char i result)
- (restrict! i &u64 0 *max-codepoint*)
- (define! result &char (&min/0 i) (min (&max i) *max-codepoint*)))
-
(define-type-inferrer (char->integer c result)
(restrict! c &char 0 *max-codepoint*)
(define! result &u64 (&min/0 c) (min (&max c) *max-codepoint*)))
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm
index ffc913826..cd12f2cdc 100644
--- a/module/system/vm/assembler.scm
+++ b/module/system/vm/assembler.scm
@@ -260,7 +260,6 @@
emit-srsh/immediate
emit-ulsh/immediate
emit-char->integer
- emit-integer->char
emit-class-of
emit-make-array
emit-scm->f64