diff options
author | Ovidiu Predescu <ovidiu@aracnet.com> | 1998-09-02 23:48:01 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-09-02 17:48:01 -0600 |
commit | d8bb17c8e33975277dd5231e190bf99451b7025d (patch) | |
tree | 1c3b607110323b831606c2ec27d39a0f292a1a15 /gcc/objc/misc.c | |
parent | d636ae0b801758df397e3e1ee790ed041a48b9f9 (diff) | |
download | gcc-d8bb17c8e33975277dd5231e190bf99451b7025d.zip gcc-d8bb17c8e33975277dd5231e190bf99451b7025d.tar.gz gcc-d8bb17c8e33975277dd5231e190bf99451b7025d.tar.bz2 |
Boehm GC support for ObjC from Ovidiu Predescu.
From-SVN: r22199
Diffstat (limited to 'gcc/objc/misc.c')
-rw-r--r-- | gcc/objc/misc.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/gcc/objc/misc.c b/gcc/objc/misc.c index 8fc8a3f..7339888 100644 --- a/gcc/objc/misc.c +++ b/gcc/objc/misc.c @@ -1,6 +1,6 @@ /* GNU Objective C Runtime Miscellaneous Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. - Contrbuted by Kresten Krab Thorup + Contributed by Kresten Krab Thorup This file is part of GNU CC. @@ -144,9 +144,37 @@ objc_free(void *mem) ** Users should call the normal objc routines above for ** memory allocation and disposal within their programs. */ + +#if OBJC_WITH_GC +#include <gc.h> + +static void *GC_calloc (size_t nelem, size_t size) +{ + void* p = GC_malloc (nelem * size); + if (!p) + objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted!\n"); + + memset (p, 0, nelem * size); + return p; +} + +static void noFree (void* p) {} + +void *(*_objc_malloc)(size_t) = GC_malloc; +void *(*_objc_atomic_malloc)(size_t) = GC_malloc_atomic; +void *(*_objc_valloc)(size_t) = GC_malloc; +void *(*_objc_realloc)(void *, size_t) = GC_realloc; +void *(*_objc_calloc)(size_t, size_t) = GC_calloc; +void (*_objc_free)(void *) = noFree; + +#else + void *(*_objc_malloc)(size_t) = malloc; void *(*_objc_atomic_malloc)(size_t) = malloc; void *(*_objc_valloc)(size_t) = malloc; void *(*_objc_realloc)(void *, size_t) = realloc; void *(*_objc_calloc)(size_t, size_t) = calloc; void (*_objc_free)(void *) = free; + + +#endif |