1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

squirrely smob marking refactor

* libguile/smob.c (smob_mark): No idea what the right thing is to do
  here.
This commit is contained in:
Andy Wingo 2011-10-24 18:45:41 +02:00
parent 2fe300ae8d
commit 62134ca5e9

View file

@ -307,13 +307,13 @@ smob_mark (GC_word *addr, struct GC_ms_entry *mark_stack_ptr,
/* The first word looks corrupt. */ /* The first word looks corrupt. */
abort (); abort ();
mark_stack_ptr = GC_MARK_AND_PUSH (SCM2PTR (SCM_CELL_OBJECT_1 (cell)), mark_stack_ptr = GC_MARK_AND_PUSH (SCM_UNPACK_POINTER (SCM_CELL_OBJECT_1 (cell)),
mark_stack_ptr, mark_stack_ptr,
mark_stack_limit, NULL); mark_stack_limit, NULL);
mark_stack_ptr = GC_MARK_AND_PUSH (SCM2PTR (SCM_CELL_OBJECT_2 (cell)), mark_stack_ptr = GC_MARK_AND_PUSH (SCM_UNPACK_POINTER (SCM_CELL_OBJECT_2 (cell)),
mark_stack_ptr, mark_stack_ptr,
mark_stack_limit, NULL); mark_stack_limit, NULL);
mark_stack_ptr = GC_MARK_AND_PUSH (SCM2PTR (SCM_CELL_OBJECT_3 (cell)), mark_stack_ptr = GC_MARK_AND_PUSH (SCM_UNPACK_POINTER (SCM_CELL_OBJECT_3 (cell)),
mark_stack_ptr, mark_stack_ptr,
mark_stack_limit, NULL); mark_stack_limit, NULL);
@ -332,7 +332,7 @@ smob_mark (GC_word *addr, struct GC_ms_entry *mark_stack_ptr,
if (SCM_HEAP_OBJECT_P (obj)) if (SCM_HEAP_OBJECT_P (obj))
/* Mark the returned object. */ /* Mark the returned object. */
mark_stack_ptr = GC_MARK_AND_PUSH (SCM2PTR (obj), mark_stack_ptr = GC_MARK_AND_PUSH (SCM_UNPACK_POINTER (obj),
mark_stack_ptr, mark_stack_ptr,
mark_stack_limit, NULL); mark_stack_limit, NULL);
@ -365,7 +365,7 @@ scm_gc_mark (SCM o)
/* The function was not called from a mark procedure. */ /* The function was not called from a mark procedure. */
abort (); abort ();
mark_stack_ptr = GC_MARK_AND_PUSH (SCM2PTR (o), mark_stack_ptr = GC_MARK_AND_PUSH (SCM_UNPACK_POINTER (o),
CURRENT_MARK_PTR, CURRENT_MARK_LIMIT, CURRENT_MARK_PTR, CURRENT_MARK_LIMIT,
NULL); NULL);
SCM_I_CURRENT_THREAD->current_mark_stack_ptr = mark_stack_ptr; SCM_I_CURRENT_THREAD->current_mark_stack_ptr = mark_stack_ptr;