diff --git a/ldb/backtrace.c b/ldb/backtrace.c index 8ba2859371634df963648a0ed415795cbd310d3b..1f0b3a1faa1e0504cd517874664da31fb30e9916 100644 --- a/ldb/backtrace.c +++ b/ldb/backtrace.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/backtrace.c,v 1.6 1990/07/02 05:22:23 wlott Exp $ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/backtrace.c,v 1.7 1990/10/22 12:38:28 wlott Exp $ * * Simple backtrace facility. More or less from Rob's lisp version. */ @@ -92,13 +92,13 @@ struct sigcontext *csp; info->interrupted = 1; if (LowtagOf(csp->sc_regs[CODE]) == type_FunctionPointer) { /* We tried to call a function, but crapped out before $CODE could be fixed up. Probably an undefined function. */ - info->frame = (struct call_frame *)csp->sc_regs[OLDCONT]; + info->frame = (struct call_frame *)csp->sc_regs[OCFP]; info->lra = (lispobj)csp->sc_regs[LRA]; info->code = code_pointer(info->lra); pc = (unsigned long)PTR(info->lra); } else { - info->frame = (struct call_frame *)csp->sc_regs[CONT]; + info->frame = (struct call_frame *)csp->sc_regs[CFP]; info->code = code_pointer(csp->sc_regs[CODE]); info->lra = NIL; pc = csp->sc_pc; @@ -136,7 +136,7 @@ struct call_info *info; free = SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX)>>2; while (free-- > 0) { csp = lisp_interrupt_contexts[free]; - if ((struct call_frame *)(csp->sc_regs[CONT]) == info->frame) { + if ((struct call_frame *)(csp->sc_regs[CFP]) == info->frame) { info_from_sigcontext(info, csp); break; } diff --git a/ldb/gc.c b/ldb/gc.c index 2a696185c71f95ee9c3525e5fe493e9bb557e804..c43fc793c095bd3c70c677f40fdc66e8ab19e6f7 100644 --- a/ldb/gc.c +++ b/ldb/gc.c @@ -1,7 +1,7 @@ /* * Stop and Copy GC based on Cheney's algorithm. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/gc.c,v 1.16 1990/10/22 12:28:20 wlott Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/gc.c,v 1.17 1990/10/22 12:38:46 wlott Exp $ * * Written by Christopher Hoover. */ @@ -372,7 +372,7 @@ scavenge_interrupt_contexts() static int boxed_registers[] = { A0, A1, A2, A3, A4, A5, CNAME, LEXENV, - ARGS, OLDCONT, LRA, L0, L1, L2, CODE + NFP, OCFP, LRA, L0, L1, L2, CODE }; scavenge_interrupt_context(context) diff --git a/ldb/interrupt.c b/ldb/interrupt.c index fb733a7bfa6c738c2e5753099ed17db11a7f8b2d..f53db48558639bbc26d93132f19d1a66e7fe7e66 100644 --- a/ldb/interrupt.c +++ b/ldb/interrupt.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/interrupt.c,v 1.10 1990/10/13 04:50:01 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/interrupt.c,v 1.11 1990/10/22 12:38:51 wlott Exp $ */ /* Interrupt handing magic. */ @@ -36,22 +36,22 @@ static void fake_foreign_function_call(context) /* Build a fake stack frame */ current_control_frame_pointer = (lispobj *) context->sc_regs[CSP]; - if ((lispobj *)context->sc_regs[CONT]==current_control_frame_pointer) { + if ((lispobj *)context->sc_regs[CFP]==current_control_frame_pointer) { /* There is a small window during call where the callee's frame */ /* isn't built yet. */ if (LowtagOf(context->sc_regs[CODE]) == type_FunctionPointer) { /* We have called, but not built the new frame, so build it for them. */ - current_control_frame_pointer[0] = context->sc_regs[OLDCONT]; + current_control_frame_pointer[0] = context->sc_regs[OCFP]; current_control_frame_pointer[1] = context->sc_regs[LRA]; current_control_frame_pointer += 8; /* Build our frame on top of it. */ - oldcont = (lispobj)context->sc_regs[CONT]; + oldcont = (lispobj)context->sc_regs[CFP]; } else { /* We haven't yet called, build our frame as if the partial frame wasn't there. */ - oldcont = (lispobj)context->sc_regs[OLDCONT]; + oldcont = (lispobj)context->sc_regs[OCFP]; } } /* ### We can't tell if we are still in the caller if it had to @@ -59,7 +59,7 @@ static void fake_foreign_function_call(context) /* ### Can anything strange happen during return? */ else /* Normal case. */ - oldcont = (lispobj)context->sc_regs[CONT]; + oldcont = (lispobj)context->sc_regs[CFP]; current_control_stack_pointer = current_control_frame_pointer + 8; current_control_frame_pointer[0] = oldcont; @@ -268,9 +268,14 @@ struct sigcontext *context; if (dest < 32) { set_global_pointer(saved_global_pointer); + current_dynamic_space_free_pointer = + (lispobj *) context->sc_regs[ALLOC]; context->sc_regs[dest] = alloc_number(result); + context->sc_regs[ALLOC] = + (unsigned long) current_dynamic_space_free_pointer; + skip_instruction(context); }