diff --git a/GNUmakefile b/GNUmakefile index ce62f19..3ab5b7a 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -33,14 +33,6 @@ libobjc_C_FILES = \ sendmsg2.c\ statics_loader.c -ifneq ($(enable_legacy), no) -libobjc_C_FILES += \ - legacy_malloc.c\ - objects.c\ - thr.c - -endif - libobjc_HEADER_FILES_DIR = objc libobjc_HEADER_FILES_INSTALL_DIR = objc ifneq ($(install_headers), no) diff --git a/misc.c b/misc.c deleted file mode 100644 index 6d8af94..0000000 --- a/misc.c +++ /dev/null @@ -1,184 +0,0 @@ -/* GNU Objective C Runtime Miscellaneous - Copyright (C) 1993, 1994, 1995, 1996, 1997, 2002, 2009 - Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 3, or (at your option) any -later version. - -GCC is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - - -#define __USE_FIXED_PROTOTYPES__ -#include -#include "objc/runtime-legacy.h" - -/* -** Error handler function -** NULL so that default is to just print to stderr -*/ -static objc_error_handler _objc_error_handler = NULL; - -/* Trigger an objc error */ -void -objc_error (id object, int code, const char *fmt, ...) -{ - va_list ap; - - va_start (ap, fmt); - objc_verror (object, code, fmt, ap); - va_end (ap); -} - -/* Trigger an objc error */ -void -objc_verror (id object, int code, const char *fmt, va_list ap) -{ - BOOL result = NO; - - /* Call the error handler if its there - Otherwise print to stderr */ - if (_objc_error_handler) - result = (*_objc_error_handler) (object, code, fmt, ap); - else - vfprintf (stderr, fmt, ap); - - /* Continue if the error handler says its ok - Otherwise abort the program */ - if (result) - return; - else - abort (); -} - -/* Set the error handler */ -objc_error_handler -objc_set_error_handler (objc_error_handler func) -{ - objc_error_handler temp = _objc_error_handler; - _objc_error_handler = func; - return temp; -} - -/* -** 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_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted\n"); - return res; -} - -void * -objc_atomic_malloc (size_t size) -{ - void *res = (void *) (*_objc_atomic_malloc) (size); - if (! res) - objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted\n"); - return res; -} - -void * -objc_valloc (size_t size) -{ - void *res = (void *) (*_objc_valloc) (size); - if (! res) - objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted\n"); - return res; -} - -void * -objc_realloc (void *mem, size_t size) -{ - void *res = (void *) (*_objc_realloc) (mem, size); - if (! res) - objc_error (nil, OBJC_ERR_MEMORY, "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_error (nil, OBJC_ERR_MEMORY, "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. -*/ - -#if OBJC_WITH_GC -#include - -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 /* !OBJC_WITH_GC */ - -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 /* !OBJC_WITH_GC */ diff --git a/objects.c b/objects.c deleted file mode 100644 index 4670d2e..0000000 --- a/objects.c +++ /dev/null @@ -1,101 +0,0 @@ -/* GNU Objective C Runtime class related functions - Copyright (C) 1993, 1995, 1996, 2009 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under the -terms of the GNU General Public License as published by the Free Software -Foundation; either version 3, or (at your option) any later version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - - -#include "objc/objc.h" -#include "objc/runtime-legacy.h" /* the kitchen sink */ - -#if OBJC_WITH_GC -# include -#endif - -id __objc_object_alloc (Class); -id __objc_object_dispose (id); -id __objc_object_copy (id); - -id (*_objc_object_alloc) (Class) = __objc_object_alloc; /* !T:SINGLE */ -id (*_objc_object_dispose) (id) = __objc_object_dispose; /* !T:SINGLE */ -id (*_objc_object_copy) (id) = __objc_object_copy; /* !T:SINGLE */ - -id -class_create_instance (Class class) -{ - id new = nil; - -#if OBJC_WITH_GC - if (CLS_ISCLASS (class)) - new = (id) GC_malloc_explicitly_typed (class->instance_size, - class->gc_object_type); -#else - if (CLS_ISCLASS (class)) - new = (*_objc_object_alloc) (class); -#endif - - if (new != nil) - { - memset (new, 0, class->instance_size); - new->class_pointer = class; - } - return new; -} - -id -object_copy (id object) -{ - if ((object != nil) && CLS_ISCLASS (object->class_pointer)) - return (*_objc_object_copy) (object); - else - return nil; -} - -id -object_dispose (id object) -{ - if ((object != nil) && CLS_ISCLASS (object->class_pointer)) - { - if (_objc_object_dispose) - (*_objc_object_dispose) (object); - else - objc_free (object); - } - return nil; -} - -id __objc_object_alloc (Class class) -{ - return (id) objc_malloc (class->instance_size); -} - -id __objc_object_dispose (id object) -{ - objc_free (object); - return 0; -} - -id __objc_object_copy (id object) -{ - id copy = class_create_instance (object->class_pointer); - memcpy (copy, object, object->class_pointer->instance_size); - return copy; -} diff --git a/thr.c b/thr.c deleted file mode 100644 index 367afc8..0000000 --- a/thr.c +++ /dev/null @@ -1,80 +0,0 @@ -/* GNU Objective C Runtime Thread Interface - Copyright (C) 1996, 1997, 2009 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under the -terms of the GNU General Public License as published by the Free Software -Foundation; either version 3, or (at your option) any later version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - - -#include -#include "lock.h" -#include "objc/runtime-legacy.h" - -/* The hook function called when the runtime becomes multi threaded */ -// The runtime is now always in multithreaded mode as there was no benefit to -// not being in multithreaded mode. - -objc_thread_callback objc_set_thread_callback (objc_thread_callback func) -{ - static objc_thread_callback _objc_became_multi_threaded = NULL; - objc_thread_callback temp = _objc_became_multi_threaded; - // Call the function immediately and then ignore it forever because it is - // pointless. - func(); - _objc_became_multi_threaded = func; - return temp; -} - -/* Deprecated functions for creating and destroying mutexes. */ -objc_mutex_t objc_mutex_allocate (void) -{ - mutex_t *mutex = malloc(sizeof(mutex_t)); - INIT_LOCK(*mutex); - return mutex; -} -int objc_mutex_deallocate (objc_mutex_t mutex) -{ - DESTROY_LOCK(mutex); - free(mutex); - return 0; -} - -/* External functions for locking and unlocking runtime mutexes. */ -int -objc_mutex_lock (objc_mutex_t mutex) -{ - return LOCK((mutex_t*)mutex); -} - -int -objc_mutex_unlock (objc_mutex_t mutex) -{ - return UNLOCK((mutex_t*)mutex); -} - - -// Legacy cruft that never did anything: -void -objc_thread_add (void) {} - -void -objc_thread_remove (void) {} - -/* End of File */