Overview
Comment: | Always use the old GNU API, even with the new GNU runtime.
The new API of the new GNU runtime is currently too broken to be of any |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
546332b4d790b91927ab7032a75642df |
User & Date: | js on 2011-08-03 03:53:03 |
Other Links: | manifest | tags |
Context
2011-08-03
| ||
04:14 | Use the well hidden __objc_update_dispatch_table_for_class() function. check-in: 3f0940e36d user: js tags: trunk | |
03:53 | Always use the old GNU API, even with the new GNU runtime. check-in: 546332b4d7 user: js tags: trunk | |
03:38 | Fix updating the dtable for the old GNU runtime. check-in: 0322aa3168 user: js tags: trunk | |
Changes
Modified configure.ac from [31e53b80c3] to [235ed393ab].
︙ | ︙ | |||
162 163 164 165 166 167 168 | AC_CHECK_LIB(objc, objc_msgSend, [ LIBS="-lobjc $LIBS" ], [ AC_MSG_ERROR([libobjc not found!]) ]) ;; GNU) | > > > > | | > > | 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | AC_CHECK_LIB(objc, objc_msgSend, [ LIBS="-lobjc $LIBS" ], [ AC_MSG_ERROR([libobjc not found!]) ]) ;; GNU) # The new API of the new GNU runtime is currently too broken to # be of any use, thus we even use the old API when the new one # is detected until the new one has been fixed and offers a way # to detect if it is the fixed one. dnl AC_DEFINE(OF_GNU_RUNTIME, 1, dnl [Whether we use the GNU ObjC runtime]) AC_DEFINE(OF_OLD_GNU_RUNTIME, 1, [Whether we use the old GNU ObjC runtime]) AC_CHECK_LIB(objc, objc_msg_lookup, [ LIBS="-lobjc $LIBS" ], [ AC_MSG_ERROR([libobjc not found!]) ]) ;; |
︙ | ︙ |
Modified src/OFObject.m from [ec4f3dc978] to [4d946cf26f].
︙ | ︙ | |||
105 106 107 108 109 110 111 112 113 114 115 116 117 118 | #ifndef HAVE_OBJC_ENUMERATIONMUTATION void objc_enumerationMutation(id object) { enumeration_mutation_handler(object); } #endif const char* _NSPrintForDebugger(id object) { return [[object description] cString]; } | > > > > | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | #ifndef HAVE_OBJC_ENUMERATIONMUTATION void objc_enumerationMutation(id object) { enumeration_mutation_handler(object); } #endif #if defined(HAVE_OBJC_ENUMERATIONMUTATION) && defined(OF_OLD_GNU_RUNTIME) extern void objc_setEnumerationMutationHandler(void(*handler)(id)); #endif const char* _NSPrintForDebugger(id object) { return [[object description] cString]; } |
︙ | ︙ | |||
168 169 170 171 172 173 174 | if (!objc_properties_init()) { fputs("Runtime error: objc_properties_init() failed!\n", stderr); abort(); } #endif | | | 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | if (!objc_properties_init()) { fputs("Runtime error: objc_properties_init() failed!\n", stderr); abort(); } #endif #ifdef HAVE_OBJC_ENUMERATIONMUTATION objc_setEnumerationMutationHandler(enumeration_mutation_handler); #endif cxx_construct = sel_registerName(".cxx_construct"); cxx_destruct = sel_registerName(".cxx_destruct"); if (cxx_construct == NULL || cxx_destruct == NULL) { |
︙ | ︙ |