27 Commits (58a574b34f214ed5e33af091352b30b34987fa2c)

Author SHA1 Message Date
theraven 58a574b34f Fixed a great many property introspection bugs and added test case.
Test case by Jean-Charles Bertin!
13 years ago
theraven abc1d44c9c Fix handling of properties that refer to an instance variable other than the
default.
13 years ago
thebeing 1684283af0 Fix bug in protocol_copyMethodDescriptionList() where we were calling calloc()
with a wrong element size.
14 years ago
theraven 0eeff38f1b Fix potential null pointer dereference.
Reported by: Riccardo Mottola
14 years ago
theraven ec5046f8ca Work around GCC bug. 14 years ago
theraven 4796a41e4e Finished implementing the new runtime APIs. 14 years ago
theraven 9b70b22eee Use __unsafe_unretained instead of const for returning protocol arrays. Let's not break everyone's code, even if we really want to. 15 years ago
theraven b5380d50d3 Added support for ARC.
Weak references are still not supported, but code that doesn't use them (i.e. any code that wants to be compatible with OS X 10.6) will work fine.

The current implementation is VERY inefficient and has a large number of missed optimisation opportunities: this is the 'make it right' phase, and should be almost equivalent to explicit retain / release code.
15 years ago
theraven 4ffb19230f Make sure that the statics used to store internal tables are marked as roots. 15 years ago
theraven c6f0651609 Implemented objc_copyProtocolList(). 15 years ago
theraven d51500184c More cleanups. Stop using __ identifiers for internal stuff now that it's properly marked private and we don't have to worry about conflicts. 15 years ago
theraven 6c7cf4a5a6 Add visibility attributes on all internal functions so that we aren't ever exporting them outside of libobjc. 15 years ago
theraven 3eb0ecb96b Ensure that the superclass is registered when testing for protocol conformance. 15 years ago
ericwa ed1c9d41eb libobjc2: Add a pile of NULL checks. In general, any public function should be able to handle NULL for any object/class/selector/pointer to opaque structure without blowing up. 16 years ago
theraven d70523947b Implement some missing runtime functions. 16 years ago
theraven 7453547c47 Add protocol_getMethodDescription(). 16 years ago
theraven 77d02d075b Add some missing protocol introspection functions. 16 years ago
theraven 65ec110a61 Make sure both protocol classes are available before resolving protocols. 16 years ago
theraven 627e8cb0dc Remove debugging lines left in by mistake in last commit. 16 years ago
theraven 779b28abeb Lots of tidying, removing legacy stuff. 16 years ago
ericwa cc260222da protocol.c: don't call init_protocols() with NULL 16 years ago
theraven bb8cafaa15 Finished rewriting the loader. It's now cleanly separated into logically-separate components, so there's a chance it might actually be maintainable... 16 years ago
theraven 8058495e39 Fix crash with gcc-compiled protocols. 16 years ago
theraven c1a637a990 Allowed hash tables to dynamically resize. This uses toydispatch to free the old version of the table after copying all of the data into the new one, after waiting enough time to allow all potential readers to finish. There are theoretical cases when this can fail, but hopefully no practical ones. The theoretical cases can be removed by making the garbage thread run at a lower priority than all of the other threads in the system.
The protocols table and the class table will now grow as required.  Protocols are now added to the protocols table as they are created, so you should get something sensible and introspectable back when you look up a protocol by name.
16 years ago
theraven a2dbc582de Made objc_getProtocol() return a protocol from the protocol table, rather than creating a new one. 16 years ago
theraven e1ae8df5af Initial work on protocol uniquing. Protocols are now added to a table and can be looked up at run time. 16 years ago
theraven 323e3dfaeb Added new runtime library, based on GCC 4.4 libobjc, libobjc_tr and Objective2.framework. 17 years ago