From 34b793cee4f675398c2a5f6789d7d54cb57e1f1a Mon Sep 17 00:00:00 2001 From: emarsden <emarsden> Date: Sat, 19 Jul 2003 14:10:16 +0000 Subject: [PATCH] - fix a signed/unsigned cast bug that was prevented the auto-gc-trigger from functioning correctly when using certain dynamic-space sizes (for platforms that don't have an internal gc trigger). - added a few #include files to avoid compiler warnings - changed some #ifdef semantics: DEBUG activates additional assertions, and PRINTNOISE activates debugging statements. --- lisp/gc.c | 11 ++++++++--- lisp/hpux-os.c | 4 ++-- lisp/interrupt.c | 22 ++++++++++++---------- lisp/os-common.c | 4 ++-- lisp/print.c | 5 +++-- lisp/solaris-os.c | 5 +++-- lisp/validate.c | 4 +++- 7 files changed, 33 insertions(+), 22 deletions(-) diff --git a/lisp/gc.c b/lisp/gc.c index 09e5671a0..8bbe155f9 100644 --- a/lisp/gc.c +++ b/lisp/gc.c @@ -1,7 +1,7 @@ /* * Stop and Copy GC based on Cheney's algorithm. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.20 2002/05/02 21:10:53 toy Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.21 2003/07/19 14:10:16 emarsden Exp $ * * Written by Christopher Hoover. */ @@ -40,7 +40,7 @@ static void scan_weak_pointers(void); #define gc_abort() lose("GC invariant lost! File \"%s\", line %d\n", \ __FILE__, __LINE__) -#if 0 +#if DEBUG #define gc_assert(ex) do { \ if (!(ex)) gc_abort(); \ } while (0) @@ -2254,7 +2254,12 @@ void set_auto_gc_trigger(os_vm_size_t dynamic_usage) os_protect(addr, length, 0); #endif - current_auto_gc_trigger = (lispobj *)addr; + current_auto_gc_trigger = (lispobj *) addr; + +#ifdef PRINTNOISE + fprintf (stderr, "current_auto_gc_trigger set to %p\n", current_auto_gc_trigger); +#endif + } void clear_auto_gc_trigger(void) diff --git a/lisp/hpux-os.c b/lisp/hpux-os.c index 30a8ffb16..322ff2a43 100644 --- a/lisp/hpux-os.c +++ b/lisp/hpux-os.c @@ -1,5 +1,5 @@ /* - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/hpux-os.c,v 1.4 1993/11/12 20:08:22 wlott Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/hpux-os.c,v 1.5 2003/07/19 14:10:16 emarsden Exp $ * * OS-dependent routines. This file (along with os.h) exports an * OS-independent interface to the operating system VM facilities. @@ -244,7 +244,7 @@ os_zero(os_vm_address_t addr,os_vm_size_t length) os_vm_size_t block_size; int i; -#ifdef DEBUG +#ifdef PRINTNOISE fprintf(stderr,"os_zero: addr: 0x%08x, len: 0x%08x, end: 0x%X\n",addr, length,addr+length); #endif diff --git a/lisp/interrupt.c b/lisp/interrupt.c index 0b001fa3d..6e0a315c8 100644 --- a/lisp/interrupt.c +++ b/lisp/interrupt.c @@ -1,15 +1,12 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.29 2003/05/30 01:07:20 toy Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.30 2003/07/19 14:10:16 emarsden Exp $ */ /* Interrupt handing magic. */ #include <stdio.h> - +#include <unistd.h> +#include <stdlib.h> #include <signal.h> -#ifdef mach -#ifdef mips -#include <mips/cpu.h> -#endif -#endif +#include <assert.h> #include "lisp.h" #include "arch.h" @@ -447,13 +444,18 @@ maybe_now_maybe_later(HANDLER_ARGS) #ifndef INTERNAL_GC_TRIGGER static boolean gc_trigger_hit(HANDLER_ARGS) { - if (current_auto_gc_trigger == NULL) + if (current_auto_gc_trigger == NULL) { return FALSE; - else{ + } else { lispobj *badaddr=(lispobj *)arch_get_bad_addr(signal, code, context); +#ifdef PRINTNOISE + fprintf (stderr, "gc_trigger_hit: badaddr=%p, current_auto_gc_trigger=%p, limit=%p\n", + badaddr, current_auto_gc_trigger, + current_dynamic_space + dynamic_space_size); +#endif return (badaddr >= current_auto_gc_trigger && - badaddr < current_dynamic_space + dynamic_space_size); + (unsigned long) badaddr < (unsigned long) current_dynamic_space + (unsigned long) dynamic_space_size); } } #endif diff --git a/lisp/os-common.c b/lisp/os-common.c index 8c67436b0..879c31513 100644 --- a/lisp/os-common.c +++ b/lisp/os-common.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os-common.c,v 1.11 2003/05/30 01:07:20 toy Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os-common.c,v 1.12 2003/07/19 14:10:16 emarsden Exp $ This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. @@ -28,7 +28,7 @@ os_vm_size_t length; os_vm_address_t block_start; os_vm_size_t block_size; -#ifdef DEBUG +#ifdef PRINTNOISE fprintf(stderr,";;; os_zero: addr: 0x%08x, len: 0x%08x\n",addr,length); #endif diff --git a/lisp/print.c b/lisp/print.c index a70de3952..0a7175b23 100644 --- a/lisp/print.c +++ b/lisp/print.c @@ -1,6 +1,7 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/print.c,v 1.13 2001/01/09 19:46:57 dtc Exp $ */ -#include <stdio.h> +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/print.c,v 1.14 2003/07/19 14:10:16 emarsden Exp $ */ +#include <stdio.h> +#include <string.h> #include "print.h" #include "lisp.h" #include "internals.h" diff --git a/lisp/solaris-os.c b/lisp/solaris-os.c index 78d8a8f18..64b1e9139 100644 --- a/lisp/solaris-os.c +++ b/lisp/solaris-os.c @@ -1,5 +1,5 @@ /* - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/solaris-os.c,v 1.7 2003/05/29 22:03:01 toy Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/solaris-os.c,v 1.8 2003/07/19 14:10:16 emarsden Exp $ * * OS-dependent routines. This file (along with os.h) exports an * OS-independent interface to the operating system VM facilities. @@ -16,8 +16,9 @@ #define DEBUG #include <stdio.h> - +#include <stdlib.h> #include <signal.h> +#include <fcntl.h> #include <sys/file.h> #include <unistd.h> diff --git a/lisp/validate.c b/lisp/validate.c index 857954956..23121c704 100644 --- a/lisp/validate.c +++ b/lisp/validate.c @@ -1,14 +1,16 @@ /* - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/validate.c,v 1.11 2003/03/23 21:23:41 gerd Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/validate.c,v 1.12 2003/07/19 14:10:16 emarsden Exp $ * * Memory Validation */ #include <stdio.h> +#include <unistd.h> #include "lisp.h" #include "os.h" #include "globals.h" #include "validate.h" +#include "internals.h" static void ensure_space(lispobj *start, size_t size) -- GitLab