diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index 61fb38967..63f4b895e 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -322,8 +322,6 @@ VM_VALIDATE (x, SCM_CHARP, proc, char) #define VM_VALIDATE_STRING(obj, proc) \ VM_VALIDATE (obj, scm_is_string, proc, string) -#define VM_VALIDATE_VARIABLE(obj, proc) \ - VM_VALIDATE (obj, SCM_VARIABLEP, proc, variable) #define VM_VALIDATE_INDEX(u64, size, proc) \ VM_ASSERT (u64 < size, vm_error_out_of_range_uint64 (proc, u64)) @@ -1536,34 +1534,11 @@ VM_NAME (scm_i_thread *thread, struct scm_vm *vp, NEXT (3); } - /* free-ref dst:12 src:12 _:8 idx:24 - * - * Load free variable IDX from the closure SRC into local slot DST. - */ - VM_DEFINE_OP (55, free_ref, "free-ref", OP2 (X8_S12_S12, X8_C24) | OP_DST) + VM_DEFINE_OP (55, unused_55, NULL, NOP) + VM_DEFINE_OP (56, unused_56, NULL, NOP) { - scm_t_uint16 dst, src; - scm_t_uint32 idx; - UNPACK_12_12 (op, dst, src); - UNPACK_24 (ip[1], idx); - /* CHECK_FREE_VARIABLE (src); */ - SP_SET (dst, SCM_PROGRAM_FREE_VARIABLE_REF (SP_REF (src), idx)); - NEXT (2); - } - - /* free-set! dst:12 src:12 _:8 idx:24 - * - * Set free variable IDX from the closure DST to SRC. - */ - VM_DEFINE_OP (56, free_set, "free-set!", OP2 (X8_S12_S12, X8_C24)) - { - scm_t_uint16 dst, src; - scm_t_uint32 idx; - UNPACK_12_12 (op, dst, src); - UNPACK_24 (ip[1], idx); - /* CHECK_FREE_VARIABLE (src); */ - SCM_PROGRAM_FREE_VARIABLE_SET (SP_REF (dst), idx, SP_REF (src)); - NEXT (2); + vm_error_bad_instruction (op); + abort (); /* never reached */ } diff --git a/module/language/cps/compile-bytecode.scm b/module/language/cps/compile-bytecode.scm index f14f48f43..8e6388a29 100644 --- a/module/language/cps/compile-bytecode.scm +++ b/module/language/cps/compile-bytecode.scm @@ -172,8 +172,6 @@ (emit-word-ref/immediate asm (from-sp dst) (from-sp (slot obj)) idx)) (($ $primcall 'pointer-ref/immediate (annotation . idx) (obj)) (emit-pointer-ref/immediate asm (from-sp dst) (from-sp (slot obj)) idx)) - (($ $primcall 'free-ref idx (closure)) - (emit-free-ref asm (from-sp dst) (from-sp (slot closure)) idx)) (($ $primcall 'char->integer #f (src)) (emit-char->integer asm (from-sp dst) (from-sp (slot src)))) (($ $primcall 'integer->char #f (src)) @@ -302,9 +300,6 @@ (($ $primcall 'pointer-set!/immediate (annotation . idx) (obj val)) (emit-pointer-set!/immediate asm (from-sp (slot obj)) idx (from-sp (slot val)))) - (($ $primcall 'free-set! idx (closure value)) - (emit-free-set! asm (from-sp (slot closure)) (from-sp (slot value)) - idx)) (($ $primcall 'string-set! #f (string index char)) (emit-string-set! asm (from-sp (slot string)) (from-sp (slot index)) (from-sp (slot char)))) diff --git a/module/language/cps/effects-analysis.scm b/module/language/cps/effects-analysis.scm index aea0d5803..3c52225d0 100644 --- a/module/language/cps/effects-analysis.scm +++ b/module/language/cps/effects-analysis.scm @@ -450,11 +450,6 @@ the LABELS that are clobbered by the effects of LABEL." ((f32-set! obj bv n x) (&write-object (annotation->memory-kind param))) ((f64-set! obj bv n x) (&write-object (annotation->memory-kind param)))) -;; Closures. -(define-primitive-effects* param - ((free-ref closure) (&read-field &closure param)) - ((free-set! closure val) (&write-field &closure param))) - ;; Modules. (define-primitive-effects ((current-module) (&read-object &module)) diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index da125119d..33645a28d 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -198,8 +198,6 @@ emit-bind-kwargs emit-bind-rest emit-make-closure - emit-free-ref - emit-free-set! emit-current-module emit-resolve emit-define! diff --git a/module/system/vm/disassembler.scm b/module/system/vm/disassembler.scm index 8664039f0..286a0f1c5 100644 --- a/module/system/vm/disassembler.scm +++ b/module/system/vm/disassembler.scm @@ -275,8 +275,6 @@ address of that offset." (list "~A" (builtin-index->name idx))) (((or 'static-ref 'static-set!) _ target) (list "~@Y" (dereference-scm target))) - (((or 'free-ref 'free-set!) _ _ index) - (list "free var ~a" index)) (('resolve-module dst name public) (list "~a" (if (zero? public) "private" "public"))) (('toplevel-box _ var-offset mod-offset sym-offset bound?)