mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-07 18:30:25 +02:00
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 ()'.
This commit is contained in:
parent
d9e59f894e
commit
3d94d862f8
4 changed files with 1 additions and 130 deletions
|
@ -79,20 +79,7 @@ vm_frame_print (SCM frame, SCM port, scm_print_state *pstate)
|
||||||
return 1;
|
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 */
|
/* Scheme interface */
|
||||||
|
|
||||||
SCM_DEFINE (scm_vm_frame_p, "vm-frame?", 1, 0, 0,
|
SCM_DEFINE (scm_vm_frame_p, "vm-frame?", 1, 0, 0,
|
||||||
|
@ -294,8 +281,6 @@ void
|
||||||
scm_bootstrap_frames (void)
|
scm_bootstrap_frames (void)
|
||||||
{
|
{
|
||||||
scm_tc16_vm_frame = scm_make_smob_type ("vm-frame", 0);
|
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);
|
scm_set_smob_print (scm_tc16_vm_frame, vm_frame_print);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,12 +136,6 @@ scm_c_make_objcode_slice (SCM parent, scm_t_uint8 *ptr)
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
static SCM
|
|
||||||
objcode_mark (SCM obj)
|
|
||||||
{
|
|
||||||
return SCM_SMOB_OBJECT_2 (obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Scheme interface
|
* Scheme interface
|
||||||
|
@ -265,7 +259,6 @@ void
|
||||||
scm_bootstrap_objcodes (void)
|
scm_bootstrap_objcodes (void)
|
||||||
{
|
{
|
||||||
scm_tc16_objcode = scm_make_smob_type ("objcode", 0);
|
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
|
/* Before, we used __BYTE_ORDER, but that is not defined on all
|
||||||
|
|
|
@ -82,16 +82,6 @@ SCM_DEFINE (scm_make_program, "make-program", 1, 2, 0,
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#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
|
static SCM
|
||||||
program_apply (SCM program, SCM args)
|
program_apply (SCM program, SCM args)
|
||||||
{
|
{
|
||||||
|
@ -362,7 +352,6 @@ void
|
||||||
scm_bootstrap_programs (void)
|
scm_bootstrap_programs (void)
|
||||||
{
|
{
|
||||||
scm_tc16_program = scm_make_smob_type ("program", 0);
|
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_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_0 = program_apply_0;
|
||||||
scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_1 = program_apply_1;
|
scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_1 = program_apply_1;
|
||||||
|
|
|
@ -84,62 +84,6 @@
|
||||||
|
|
||||||
scm_t_bits scm_tc16_vm_cont;
|
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
|
static SCM
|
||||||
capture_vm_cont (struct scm_vm *vp)
|
capture_vm_cont (struct scm_vm *vp)
|
||||||
{
|
{
|
||||||
|
@ -344,42 +288,6 @@ make_vm (void)
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#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
|
||||||
scm_c_vm_run (SCM vm, SCM program, SCM *argv, int nargs)
|
scm_c_vm_run (SCM vm, SCM program, SCM *argv, int nargs)
|
||||||
{
|
{
|
||||||
|
@ -646,12 +554,8 @@ scm_bootstrap_vm (void)
|
||||||
scm_bootstrap_programs ();
|
scm_bootstrap_programs ();
|
||||||
|
|
||||||
scm_tc16_vm_cont = scm_make_smob_type ("vm-cont", 0);
|
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_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_set_smob_apply (scm_tc16_vm, scm_vm_apply, 1, 0, 1);
|
||||||
|
|
||||||
scm_c_define ("load-compiled",
|
scm_c_define ("load-compiled",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue