From 3d94d862f898929876aaa8ed2937347fa3ce7ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 22 Mar 2009 15:46:46 +0100 Subject: [PATCH] Remove unneeded VM SMOB mark/free procedures. * libguile/vm.c (vm_mark_stack, vm_cont_mark, vm_cont_free, vm_mark, vm_free): Remove. (scm_bootstrap_vm): Remove corresponding `scm_set_smob_mark ()' and `scm_set_smob_free ()' calls. * libguile/frames.c (vm_frame_mark, vm_frame_free): Remove. (scm_bootstrap_frames): Remove `scm_set_smob_mark ()' and `scm_set_smob_free ()' calls. * libguile/objcodes.c (objcode_mark): Remove. (scm_bootstrap_objcodes): Remove call to `scm_set_smob_mark ()'. * libguile/programs.c (program_mark): Remove. (scm_bootstrap_programs): Remove call to `scm_set_smob_mark ()'. --- libguile/frames.c | 17 +------- libguile/objcodes.c | 7 ---- libguile/programs.c | 11 ------ libguile/vm.c | 96 --------------------------------------------- 4 files changed, 1 insertion(+), 130 deletions(-) diff --git a/libguile/frames.c b/libguile/frames.c index 647cb608d..3452caf5c 100644 --- a/libguile/frames.c +++ b/libguile/frames.c @@ -79,20 +79,7 @@ vm_frame_print (SCM frame, SCM port, scm_print_state *pstate) return 1; } -static SCM -vm_frame_mark (SCM obj) -{ - return SCM_VM_FRAME_STACK_HOLDER (obj); -} - -static scm_sizet -vm_frame_free (SCM obj) -{ - struct scm_vm_frame *p = SCM_VM_FRAME_DATA (obj); - scm_gc_free (p, sizeof(struct scm_vm_frame), "vmframe"); - return 0; -} - + /* Scheme interface */ SCM_DEFINE (scm_vm_frame_p, "vm-frame?", 1, 0, 0, @@ -294,8 +281,6 @@ void scm_bootstrap_frames (void) { scm_tc16_vm_frame = scm_make_smob_type ("vm-frame", 0); - scm_set_smob_mark (scm_tc16_vm_frame, vm_frame_mark); - scm_set_smob_free (scm_tc16_vm_frame, vm_frame_free); scm_set_smob_print (scm_tc16_vm_frame, vm_frame_print); } diff --git a/libguile/objcodes.c b/libguile/objcodes.c index 3e30b2d60..231d2f4b1 100644 --- a/libguile/objcodes.c +++ b/libguile/objcodes.c @@ -136,12 +136,6 @@ scm_c_make_objcode_slice (SCM parent, scm_t_uint8 *ptr) } #undef FUNC_NAME -static SCM -objcode_mark (SCM obj) -{ - return SCM_SMOB_OBJECT_2 (obj); -} - /* * Scheme interface @@ -265,7 +259,6 @@ void scm_bootstrap_objcodes (void) { scm_tc16_objcode = scm_make_smob_type ("objcode", 0); - scm_set_smob_mark (scm_tc16_objcode, objcode_mark); } /* Before, we used __BYTE_ORDER, but that is not defined on all diff --git a/libguile/programs.c b/libguile/programs.c index 1d6318c6c..1fcfc54c8 100644 --- a/libguile/programs.c +++ b/libguile/programs.c @@ -82,16 +82,6 @@ SCM_DEFINE (scm_make_program, "make-program", 1, 2, 0, } #undef FUNC_NAME -static SCM -program_mark (SCM obj) -{ - if (scm_is_true (SCM_PROGRAM_OBJTABLE (obj))) - scm_gc_mark (SCM_PROGRAM_OBJTABLE (obj)); - if (!scm_is_null (SCM_PROGRAM_EXTERNALS (obj))) - scm_gc_mark (SCM_PROGRAM_EXTERNALS (obj)); - return SCM_PROGRAM_OBJCODE (obj); -} - static SCM program_apply (SCM program, SCM args) { @@ -362,7 +352,6 @@ void scm_bootstrap_programs (void) { scm_tc16_program = scm_make_smob_type ("program", 0); - scm_set_smob_mark (scm_tc16_program, program_mark); scm_set_smob_apply (scm_tc16_program, program_apply, 0, 0, 1); scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_0 = program_apply_0; scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_1 = program_apply_1; diff --git a/libguile/vm.c b/libguile/vm.c index 0646becdb..e132c8eda 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -84,62 +84,6 @@ scm_t_bits scm_tc16_vm_cont; -static void -vm_mark_stack (SCM *base, scm_t_ptrdiff size, SCM *fp, scm_t_ptrdiff reloc) -{ - SCM *sp, *upper, *lower; - sp = base + size - 1; - - while (sp > base && fp) - { - upper = SCM_FRAME_UPPER_ADDRESS (fp); - lower = SCM_FRAME_LOWER_ADDRESS (fp); - - for (; sp >= upper; sp--) - if (SCM_NIMP (*sp)) - { - if (scm_in_heap_p (*sp)) - scm_gc_mark (*sp); - else - fprintf (stderr, "BADNESS: crap on the stack: %p\n", *sp); - } - - - /* skip ra, mvra */ - sp -= 2; - - /* update fp from the dynamic link */ - fp = (SCM*)*sp-- + reloc; - - /* mark from the el down to the lower address */ - for (; sp >= lower; sp--) - if (*sp && SCM_NIMP (*sp)) - scm_gc_mark (*sp); - } -} - -static SCM -vm_cont_mark (SCM obj) -{ - struct scm_vm_cont *p = SCM_VM_CONT_DATA (obj); - - if (p->stack_size) - vm_mark_stack (p->stack_base, p->stack_size, p->fp + p->reloc, p->reloc); - - return SCM_BOOL_F; -} - -static scm_sizet -vm_cont_free (SCM obj) -{ - struct scm_vm_cont *p = SCM_VM_CONT_DATA (obj); - - scm_gc_free (p->stack_base, p->stack_size * sizeof (SCM), "stack-base"); - scm_gc_free (p, sizeof (struct scm_vm), "vm"); - - return 0; -} - static SCM capture_vm_cont (struct scm_vm *vp) { @@ -344,42 +288,6 @@ make_vm (void) } #undef FUNC_NAME -static SCM -vm_mark (SCM obj) -{ - int i; - struct scm_vm *vp = SCM_VM_DATA (obj); - -#ifdef VM_ENABLE_STACK_NULLING - if (vp->sp >= vp->stack_base) - if (!vp->sp[0] || vp->sp[1]) - abort (); -#endif - - /* mark the stack, precisely */ - vm_mark_stack (vp->stack_base, vp->sp + 1 - vp->stack_base, vp->fp, 0); - - /* mark other objects */ - for (i = 0; i < SCM_VM_NUM_HOOKS; i++) - scm_gc_mark (vp->hooks[i]); - - scm_gc_mark (vp->trace_frame); - - return vp->options; -} - -static scm_sizet -vm_free (SCM obj) -{ - struct scm_vm *vp = SCM_VM_DATA (obj); - - scm_gc_free (vp->stack_base, vp->stack_size * sizeof (SCM), - "stack-base"); - scm_gc_free (vp, sizeof (struct scm_vm), "vm"); - - return 0; -} - SCM scm_c_vm_run (SCM vm, SCM program, SCM *argv, int nargs) { @@ -646,12 +554,8 @@ scm_bootstrap_vm (void) scm_bootstrap_programs (); scm_tc16_vm_cont = scm_make_smob_type ("vm-cont", 0); - scm_set_smob_mark (scm_tc16_vm_cont, vm_cont_mark); - scm_set_smob_free (scm_tc16_vm_cont, vm_cont_free); scm_tc16_vm = scm_make_smob_type ("vm", 0); - scm_set_smob_mark (scm_tc16_vm, vm_mark); - scm_set_smob_free (scm_tc16_vm, vm_free); scm_set_smob_apply (scm_tc16_vm, scm_vm_apply, 1, 0, 1); scm_c_define ("load-compiled",