Patchwork =?UTF-8?Q?libobjc=20-=20more=20modern=20Objective-C=20runtime=20API=20(3?= =?UTF-8?Q?)?=

login
register
mail settings
Submitter Nicola Pero
Date Oct. 12, 2010, 4:54 p.m.
Message ID <1286902490.574426143@192.168.2.229>
Download mbox | patch
Permalink /patch/67601/
State New
Headers show

Comments

Nicola Pero - Oct. 12, 2010, 4:54 p.m.
This tranche of the API reorganization adds objc_malloc() and similar to objc/runtime.h, and switches many files inside libobjc itself to including the new headers.

Committed to trunk.

Thanks

2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>

        * archive.c: Do not include objc/objc.h.
        * class.c: Do not include objc/objc.h.
        * encoding.c: Include objc/runtime.h, ctype.h and
        objc-private/module-abi-8.h instead of objc/objc-api.h and
        objc/encoding.h.
        * error.c: Do not include objc/objc.h.
        * gc.c: Include tconfig.h and objc/encoding.h only if
        OBJC_WITH_GC.
        * hash.c: Include objc/runtime.h and objc/thr.h instead of
        objc/objc-api.h.  Do not include objc/objc.h.
        * init.c: Do not include objc/objc.h.
        * ivars.c: Include objc/runtime.h, objc-private/module-abi-8.h and
        objc/thr.h instead of objc/objc-api.h.  Do not include
        objc/objc.h.
        * linking.m: Tidied comment.
        * memory.c: Include objc/runtime.h instead of objc/objc-api.h.
        Do not include objc/objc.h.
        * objects.c: Do not include objc/objc.h.
        * objc-sync.c: Include objc/runtime.h instead of objc/objc-api.h.
        * protocols.c: Do not include objc/objc.h.
        * sarray.c: Include objc/runtime.h instead of objc/objc-api.h.  Do
        not include objc/objc.h.
        * selector.c: Do not include objc/objc.h.
        * sendmsg.c: Do not include objc/objc.h.
        * thr.c: Include objc/runtime.h instead of objc/objc-api.h.
        Do not include objc/objc.h.
        * objc/objc-decls.h: Reindented code.
        * objc/runtime.h Include objc-decls.h.  Updated comments.
        (objc_malloc): New.
        (objc_atomic_malloc): New.
        (objc_calloc): New.
        (objc_realloc): New.
        (objc_free): New.
        * objc-private/runtime.h: Updated comments.

Patch

Index: sendmsg.c
===================================================================
--- sendmsg.c	(revision 165348)
+++ sendmsg.c	(working copy)
@@ -33,7 +33,6 @@  see the files COPYING3 and COPYING.RUNTIME respect
 #include "tconfig.h"
 #include "coretypes.h"
 #include "tm.h"
-#include "objc/objc.h"
 #include "objc/objc-api.h"
 #include "objc/thr.h"
 #include "objc-private/runtime.h"
Index: init.c
===================================================================
--- init.c	(revision 165349)
+++ init.c	(working copy)
@@ -26,7 +26,6 @@  see the files COPYING3 and COPYING.RUNTIME respect
 
 #include "objc-private/common.h"
 #include "objc-private/error.h"
-#include "objc/objc.h"
 #include "objc/objc-api.h"
 #include "objc/thr.h"
 #include "objc-private/hash.h"
Index: objc-private/runtime.h
===================================================================
--- objc-private/runtime.h	(revision 165349)
+++ objc-private/runtime.h	(working copy)
@@ -34,7 +34,8 @@  The original list was:
 
 but can almost certainly be shrinked down.
 
-*/
+Note that you can use this file both with objc/objc-api.h and with
+objc/runtime.h.  */
 
 #ifndef __objc_private_runtime_INCLUDE_GNU
 #define __objc_private_runtime_INCLUDE_GNU
Index: linking.m
===================================================================
--- linking.m	(revision 165348)
+++ linking.m	(working copy)
@@ -28,9 +28,8 @@  see the files COPYING3 and COPYING.RUNTIME respect
 #include <objc/NXConstStr.h>
 
 /* Generate references to Object and NXConstanstString classes since they are
-   needed by the runtime system to run correctly. */
+   needed by the runtime system to run correctly.  */
 
-
 void __objc_linking (void)
 {
   [Object name];
Index: class.c
===================================================================
--- class.c	(revision 165349)
+++ class.c	(working copy)
@@ -89,7 +89,6 @@  see the files COPYING3 and COPYING.RUNTIME respect
 
 #include "objc-private/common.h"
 #include "objc-private/error.h"
-#include "objc/objc.h"
 #include "objc/objc-api.h"
 #include "objc/thr.h"
 #include "objc-private/runtime.h"            /* the kitchen sink */
Index: selector.c
===================================================================
--- selector.c	(revision 165349)
+++ selector.c	(working copy)
@@ -23,7 +23,6 @@  see the files COPYING3 and COPYING.RUNTIME respect
 <http://www.gnu.org/licenses/>.  */
 
 #include "objc-private/common.h"
-#include "objc/objc.h"
 #include "objc/objc-api.h"
 #include "objc/thr.h"
 #include "objc-private/hash.h"
Index: hash.c
===================================================================
--- hash.c	(revision 165348)
+++ hash.c	(working copy)
@@ -25,8 +25,8 @@  see the files COPYING3 and COPYING.RUNTIME respect
 #include "objc-private/common.h"
 #include <assert.h> /* For assert */
 
-#include "objc/objc.h"
-#include "objc/objc-api.h"
+#include "objc/runtime.h" /* For objc_calloc */
+#include "objc/thr.h"     /* Required by objc-private/runtime.h.  */
 #include "objc-private/hash.h"
 #include "objc-private/runtime.h"		/* for DEBUG_PRINTF */
 
Index: protocols.c
===================================================================
--- protocols.c	(revision 165349)
+++ protocols.c	(working copy)
@@ -23,7 +23,6 @@  see the files COPYING3 and COPYING.RUNTIME respect
 <http://www.gnu.org/licenses/>.  */
 
 #include "objc-private/common.h"
-#include "objc/objc.h"
 #include "objc/runtime.h"
 #include "objc-private/module-abi-8.h" /* For runtime structures  */
 #include "objc/thr.h"
Index: encoding.c
===================================================================
--- encoding.c	(revision 165348)
+++ encoding.c	(working copy)
@@ -36,9 +36,10 @@  see the files COPYING3 and COPYING.RUNTIME respect
 #include "tconfig.h"
 #include "coretypes.h"
 #include "tm.h"
-#include "objc/objc-api.h"
-#include "objc/encoding.h"
+#include "objc/runtime.h"
+#include "objc-private/module-abi-8.h" /* For struct objc_method */
 #include <stdlib.h>
+#include <ctype.h>
 
 #undef  MAX
 #define MAX(X, Y)                    \
Index: objc-sync.c
===================================================================
--- objc-sync.c	(revision 165348)
+++ objc-sync.c	(working copy)
@@ -79,7 +79,7 @@  see the files COPYING3 and COPYING.RUNTIME respect
 
 #include "objc-private/common.h"
 #include "objc/objc-sync.h"         /* For objc_sync_enter(), objc_sync_exit() */
-#include "objc/objc-api.h"          /* For objc_malloc() */
+#include "objc/runtime.h"           /* For objc_malloc() */
 #include "objc/thr.h"               /* For objc_mutex_loc() and similar */
 #include "objc-private/objc-sync.h" /* For __objc_sync_init() */
 
Index: error.c
===================================================================
--- error.c	(revision 165348)
+++ error.c	(working copy)
@@ -48,8 +48,7 @@  _objc_abort (const char *fmt, ...)
 }
 
 /* The rest of the file is deprecated.  */
-#include "objc/objc.h"
-#include "objc/objc-api.h"
+#include "objc/objc-api.h" /* For objc_error_handler.  */
 
 /*
 ** Error handler function
Index: objects.c
===================================================================
--- objects.c	(revision 165348)
+++ objects.c	(working copy)
@@ -23,7 +23,6 @@  see the files COPYING3 and COPYING.RUNTIME respect
 <http://www.gnu.org/licenses/>.  */
 
 #include "objc-private/common.h"
-#include "objc/objc.h"
 #include "objc/objc-api.h"
 #include "objc-private/runtime.h"		/* the kitchen sink */
 
Index: thr.c
===================================================================
--- thr.c	(revision 165348)
+++ thr.c	(working copy)
@@ -38,8 +38,7 @@  see the files COPYING3 and COPYING.RUNTIME respect
 #include "tm.h"
 #include "defaults.h"
 #include "objc/thr.h"
-#include "objc/objc.h"
-#include "objc/objc-api.h"
+#include "objc/runtime.h"
 #include "objc-private/runtime.h"
 #include <gthr.h>
 
Index: sarray.c
===================================================================
--- sarray.c	(revision 165348)
+++ sarray.c	(working copy)
@@ -24,9 +24,8 @@  see the files COPYING3 and COPYING.RUNTIME respect
 
 #include "objc-private/common.h"
 #include "objc-private/sarray.h"
-#include "objc/objc.h"
-#include "objc/objc-api.h"
-#include "objc/thr.h"
+#include "objc/runtime.h" /* For objc_malloc */
+#include "objc/thr.h"     /* For objc_mutex_lock */
 #include "objc-private/runtime.h"
 #include <stdio.h>
 #include <string.h> /* For memset */
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 165349)
+++ ChangeLog	(working copy)
@@ -1,5 +1,42 @@ 
 2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>
 
+	* archive.c: Do not include objc/objc.h.
+	* class.c: Do not include objc/objc.h.
+	* encoding.c: Include objc/runtime.h, ctype.h and
+	objc-private/module-abi-8.h instead of objc/objc-api.h and
+	objc/encoding.h.
+	* error.c: Do not include objc/objc.h.
+	* gc.c: Include tconfig.h and objc/encoding.h only if
+	OBJC_WITH_GC.
+	* hash.c: Include objc/runtime.h and objc/thr.h instead of
+	objc/objc-api.h.  Do not include objc/objc.h.
+	* init.c: Do not include objc/objc.h.
+	* ivars.c: Include objc/runtime.h, objc-private/module-abi-8.h and
+	objc/thr.h instead of objc/objc-api.h.  Do not include
+	objc/objc.h.
+	* linking.m: Tidied comment.
+	* memory.c: Include objc/runtime.h instead of objc/objc-api.h.
+	Do not include objc/objc.h.
+	* objects.c: Do not include objc/objc.h.
+	* objc-sync.c: Include objc/runtime.h instead of objc/objc-api.h.
+	* protocols.c: Do not include objc/objc.h.
+	* sarray.c: Include objc/runtime.h instead of objc/objc-api.h.  Do
+	not include objc/objc.h.
+	* selector.c: Do not include objc/objc.h.
+	* sendmsg.c: Do not include objc/objc.h.	
+	* thr.c: Include objc/runtime.h instead of objc/objc-api.h.
+	Do not include objc/objc.h.
+	* objc/objc-decls.h: Reindented code.
+	* objc/runtime.h Include objc-decls.h.  Updated comments.
+	(objc_malloc): New.
+	(objc_atomic_malloc): New.
+	(objc_calloc): New.
+	(objc_realloc): New.
+	(objc_free): New.
+	* objc-private/runtime.h: Updated comments.
+	
+2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>
+
 	* Makefile.in (C_SOURCE_FILES): Added protocols.c.
 	* objc-private/protocols.h: New.
 	* protocols.c: New.
Index: memory.c
===================================================================
--- memory.c	(revision 165348)
+++ memory.c	(working copy)
@@ -42,8 +42,7 @@  see the files COPYING3 and COPYING.RUNTIME respect
 #define __USE_FIXED_PROTOTYPES__
 #include <stdlib.h>
 
-#include "objc/objc.h"
-#include "objc/objc-api.h"
+#include "objc/runtime.h"
 
 #if OBJC_WITH_GC
 #include <gc.h>
Index: archive.c
===================================================================
--- archive.c	(revision 165348)
+++ archive.c	(working copy)
@@ -27,7 +27,6 @@  see the files COPYING3 and COPYING.RUNTIME respect
 #include "objc-private/common.h"
 #include "objc-private/error.h"
 #include "tconfig.h"
-#include "objc/objc.h"
 #include "objc/objc-api.h"
 #include "objc/hash.h"
 #include "objc/objc-list.h" 
Index: ivars.c
===================================================================
--- ivars.c	(revision 165348)
+++ ivars.c	(working copy)
@@ -23,8 +23,9 @@  see the files COPYING3 and COPYING.RUNTIME respect
 <http://www.gnu.org/licenses/>.  */
 
 #include "objc-private/common.h"
-#include "objc/objc.h"
-#include "objc/objc-api.h"
+#include "objc/runtime.h"
+#include "objc-private/module-abi-8.h" /* For runtime structures  */
+#include "objc/thr.h"
 #include "objc-private/runtime.h"		/* the kitchen sink */
 #include <string.h> /* For strcmp */
 
Index: gc.c
===================================================================
--- gc.c	(revision 165348)
+++ gc.c	(working copy)
@@ -24,16 +24,16 @@  see the files COPYING3 and COPYING.RUNTIME respect
 <http://www.gnu.org/licenses/>.  */
 
 #include "objc-private/common.h"
-#include "tconfig.h"
 #include "objc/objc.h"
-#include "objc/encoding.h"
 
+#if OBJC_WITH_GC
+
+#include "tconfig.h"
 #include <assert.h>
 #include <string.h>
 #include <stdlib.h>
+#include "objc/encoding.h"
 
-#if OBJC_WITH_GC
-
 #include <gc.h>
 #include <limits.h>
 
Index: objc/objc-decls.h
===================================================================
--- objc/objc-decls.h	(revision 165348)
+++ objc/objc-decls.h	(working copy)
@@ -28,13 +28,13 @@  see the files COPYING3 and COPYING.RUNTIME respect
 
 #if defined (_WIN32) || defined (__WIN32__) || defined (WIN32)
 
-#    ifdef DLL_EXPORT /* defined by libtool (if required) */
-#  define objc_EXPORT 
-#  define objc_DECLARE
-#else
-#  define objc_EXPORT  extern __declspec(dllimport)
-#  define objc_DECLARE extern __declspec(dllimport)
-#endif
+#  ifdef DLL_EXPORT /* defined by libtool (if required) */
+#    define objc_EXPORT 
+#    define objc_DECLARE
+#  else
+#    define objc_EXPORT  extern __declspec(dllimport)
+#    define objc_DECLARE extern __declspec(dllimport)
+#  endif
 
 #else
 
Index: objc/runtime.h
===================================================================
--- objc/runtime.h	(revision 165349)
+++ objc/runtime.h	(working copy)
@@ -48,6 +48,7 @@  see the files COPYING3 and COPYING.RUNTIME respect
 /* TODO: This file is incomplete.  */
 
 #include "objc.h"
+#include "objc-decls.h"
 
 /* An 'Ivar' represents an instance variable.  It holds information
    about the name, type and offset of the instance variable.  */
@@ -543,12 +544,39 @@  struct __objcFastEnumerationState
 */
 
 
+/** Implementation: the following functions are in memory.c.  */
+
+/* Traditional GNU Objective-C Runtime functions that are used for
+   memory allocation and disposal.  These functions are used in the
+   same way as you use malloc, realloc, calloc and free and make sure
+   that memory allocation works properly with the garbage
+   collector.
+
+   Compatibility Note: these functions are not available with the
+   Apple/NeXT runtime.  */
+
+objc_EXPORT void *objc_malloc(size_t size);
+
+/* FIXME: Shouldn't the following be called objc_malloc_atomic ?  The
+   GC function is GC_malloc_atomic() which makes sense.
+ */
+objc_EXPORT void *objc_atomic_malloc(size_t size);
+
+objc_EXPORT void *objc_realloc(void *mem, size_t size);
+
+objc_EXPORT void *objc_calloc(size_t nelem, size_t size);
+
+objc_EXPORT void objc_free(void *mem);
+
+
 /** Implementation: the following functions are in encoding.c.  */
 
 /* Traditional GNU Objective-C Runtime functions that are currently
    used to implement method forwarding.
-*/
 
+   Compatibility Note: these functions are not available with the
+   Apple/NeXT runtime.  */
+
 /* Return the size of a variable which has the specified 'type'
    encoding.  */
 int objc_sizeof_type (const char *type);