From aa04f6fc545eefb1a5a56327e2f64c9d9af4dab1 Mon Sep 17 00:00:00 2001 From: rtoy <rtoy> Date: Wed, 8 Nov 2006 22:12:52 +0000 Subject: [PATCH] Restore alloc-tn and null-tn in interrupt_handle_space_overflow. These are in global registers and might be trashed. This makes heap overflow checking work better on solaris. There are still bugs. --- lisp/interrupt.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/interrupt.c b/lisp/interrupt.c index 4b228395e..823422508 100644 --- a/lisp/interrupt.c +++ b/lisp/interrupt.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.44 2006/11/07 11:24:12 cshapiro Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.45 2006/11/08 22:12:52 rtoy Exp $ */ /* Interrupt handling magic. */ @@ -693,6 +693,12 @@ interrupt_handle_space_overflow(lispobj error, os_context_t * context) SC_REG(context, reg_CFP) = (long) current_control_frame_pointer; /* This is sparc specific */ SC_REG(context, reg_CODE) = ((long) PTR(error)) + type_FunctionPointer; + /* + * Restore important Lisp regs. Are there others we need to + * restore? + */ + SC_REG(context, reg_ALLOC) = current_dynamic_space_free_pointer; + SC_REG(context, reg_NIL) = NIL; #else #error interrupt_handle_space_overflow not implemented for this system #endif -- GitLab