From 3adc2c31f88b7fc736d530c8c608fbdd2bddb955 Mon Sep 17 00:00:00 2001 From: rtoy <rtoy> Date: Thu, 22 Jul 2010 01:16:47 +0000 Subject: [PATCH] Fixing interior pointers should ignore the lowtag bits. Bug fix from Alastair Bridgewater. --- lisp/gencgc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/gencgc.c b/lisp/gencgc.c index b71645f94..4e729f4c9 100644 --- a/lisp/gencgc.c +++ b/lisp/gencgc.c @@ -7,7 +7,7 @@ * * Douglas Crosher, 1996, 1997, 1998, 1999. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gencgc.c,v 1.108 2010/07/19 23:08:37 rtoy Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gencgc.c,v 1.109 2010/07/22 01:16:47 rtoy Exp $ * */ @@ -2613,7 +2613,7 @@ static int boxed_registers[] = BOXED_REGISTERS; do { \ if (name##_register_pair >= 0) { \ accessor = \ - SC_REG(context, name##_register_pair) \ + PTR(SC_REG(context, name##_register_pair)) \ + name##_offset; \ } \ } while (0) @@ -2653,7 +2653,7 @@ pair_interior_pointer(os_context_t *context, unsigned long pointer, * 2010-Jul-14 */ if (Pointerp(reg) && (PTR(reg) <= pointer)) { - offset = pointer - reg; + offset = pointer - PTR(reg); if (offset < *saved_offset) { *saved_offset = offset; *register_pair = index; -- GitLab