scavenge((lispobj *) interrupt_handlers,
sizeof(interrupt_handlers) / sizeof(lispobj));
- /* _size quantities are in units of sizeof(lispobj) - i.e. 4 */
- control_stack_size =
- current_control_stack_pointer-
- (lispobj *)th->control_stack_start;
#ifdef PRINTNOISE
- printf("Scavenging the control stack at %p (%ld words) ...\n",
- ((lispobj *)th->control_stack_start),
- control_stack_size);
+ printf("Scavenging the control stack ...\n");
#endif
- scavenge(((lispobj *)th->control_stack_start), control_stack_size);
+ scavenge_control_stack(th);
binding_stack_size =
\f
#if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
+void
+scavenge_control_stack(struct thread *th)
+{
+ lispobj *control_stack =
+ (lispobj *)(th->control_stack_start);
+ unsigned long control_stack_size =
+ access_control_stack_pointer(th) - control_stack;
+
+ scavenge(control_stack, control_stack_size);
+}
+
/* Scavenging Interrupt Contexts */
static int boxed_registers[] = BOXED_REGISTERS;
extern int looks_like_valid_lisp_pointer_p(lispobj pointer, lispobj *start_addr);
+extern void scavenge_control_stack(struct thread *th);
extern void scrub_control_stack();
#include "fixnump.h"
}
}
-#if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
-static void
-scavenge_control_stack(struct thread *th)
-{
- lispobj *control_stack =
- (lispobj *)(th->control_stack_start);
- unsigned long control_stack_size =
- access_control_stack_pointer(th) - control_stack;
-
- scavenge(control_stack, control_stack_size);
-}
-#endif
-
#if defined(LISP_FEATURE_SB_THREAD) && (defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64))
static void
preserve_context_registers (os_context_t *c)