(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
This commit is contained in:
Richard Kenner 1996-09-22 10:35:45 -04:00
parent 9d46282b6c
commit 79236a0da5

View File

@ -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 <stdlib.h>
#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();
}
/*
** 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_xmalloc(size_t size)
objc_malloc(size_t size)
{
void* res = (void*) malloc(size);
void* res = (void*) (*_objc_malloc)(size);
if(!res)
objc_fatal("Virtual memory exhausted\n");
return res;
}
void *
__objc_xrealloc(void* mem, size_t size)
objc_atomic_malloc(size_t size)
{
void* res = (void*) realloc(mem, size);
void* res = (void*) (*_objc_atomic_malloc)(size);
if(!res)
objc_fatal("Virtual memory exhausted\n");
return res;
}
void *
__objc_xcalloc(size_t nelem, size_t size)
objc_valloc(size_t size)
{
void* res = (void*)calloc(nelem, size);
void* res = (void*) (*_objc_valloc)(size);
if(!res)
objc_fatal("Virtual memory exhausted\n");
return res;
}
void *
objc_realloc(void *mem, size_t 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;