From 79236a0da5f94524f06a7175027c2dee82681384 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 22 Sep 1996 10:35:45 -0400 Subject: [PATCH] (objc_malloc): Renamed from __objc_xmalloc. (objc_realloc): Renamed from __objc_realloc. (objc_atomic_malloc): New function. (objc_valloc): New function. (objc_calloc): Renamed from __objc_calloc. (objc_free): New function. From-SVN: r12763 --- gcc/objc/misc.c | 74 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/gcc/objc/misc.c b/gcc/objc/misc.c index 033018ed484..ec58d9d4e8b 100644 --- a/gcc/objc/misc.c +++ b/gcc/objc/misc.c @@ -1,7 +1,6 @@ /* GNU Objective C Runtime Miscellaneous - Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. - -Author: Kresten Krab Thorup + Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. + Contrbuted by Kresten Krab Thorup This file is part of GNU CC. @@ -26,8 +25,9 @@ Boston, MA 02111-1307, USA. */ however invalidate any other reasons why the executable file might be covered by the GNU General Public License. */ -#ifdef __alpha__ #include + +#ifdef __alpha__ extern int write (int, const char*, int); extern size_t strlen (const char*); #endif @@ -52,29 +52,77 @@ objc_fatal(const char* msg) abort(); } -void* -__objc_xmalloc(size_t size) +/* +** Standard functions for memory allocation and disposal. +** Users should use these functions in their ObjC programs so +** that they work properly with garbage collectors as well as +** can take advantage of the exception/error handling available. +*/ + +void * +objc_malloc(size_t size) +{ + void* res = (void*) (*_objc_malloc)(size); + if(!res) + objc_fatal("Virtual memory exhausted\n"); + return res; +} + +void * +objc_atomic_malloc(size_t size) { - void* res = (void*) malloc(size); + void* res = (void*) (*_objc_atomic_malloc)(size); if(!res) objc_fatal("Virtual memory exhausted\n"); return res; } -void* -__objc_xrealloc(void* mem, size_t size) +void * +objc_valloc(size_t size) { - void* res = (void*) realloc(mem, size); + void* res = (void*) (*_objc_valloc)(size); if(!res) objc_fatal("Virtual memory exhausted\n"); return res; } -void* -__objc_xcalloc(size_t nelem, size_t size) +void * +objc_realloc(void *mem, size_t size) { - void* res = (void*)calloc(nelem, size); + void* res = (void*) (*_objc_realloc)(mem, size); if(!res) objc_fatal("Virtual memory exhausted\n"); return res; } + +void * +objc_calloc(size_t nelem, size_t size) +{ + void* res = (void*) (*_objc_calloc)(nelem, size); + if(!res) + objc_fatal("Virtual memory exhausted\n"); + return res; +} + +void +objc_free(void *mem) +{ + (*_objc_free)(mem); +} + +/* +** Hook functions for memory allocation and disposal. +** This makes it easy to substitute garbage collection systems +** such as Boehm's GC by assigning these function pointers +** to the GC's allocation routines. By default these point +** to the ANSI standard malloc, realloc, free, etc. +** +** Users should call the normal objc routines above for +** memory allocation and disposal within their programs. +*/ +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; -- 2.30.2