39 Commits (8e34dccda973d160e583469e3ef289f4b0bf709d)

Author SHA1 Message Date
theraven 8e34dccda9 Deprecate access to the isa pointer. This will become a hard error in future. 15 years ago
theraven 22e5aaf7b0 Add OBJC_SMALL_OBJECT_SHIFT macro. 15 years ago
theraven 8af52846b7 Small object (hidden in a pointer) support. 15 years ago
theraven 893b9bf958 Add guard if __has_feature is not defined. 15 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 8ee4d9c38a Added implementation of property_getAttributes(). This is a horrible interface, both to implement and to use. We should add some better interfaces. 15 years ago
theraven c6f0651609 Implemented objc_copyProtocolList(). 15 years ago
theraven 79b67ad044 Added missing ivar access functions. 15 years ago
theraven e198597bd3 Added support for associative references. Modified sync code to use this. 15 years ago
thebeing ee7817cf57 Implement a hook that allows the compiler to register the aliases used with the
@compatibility_alias directive so that they can be resolved at runtime.
15 years ago
theraven faa741b133 Added some header documentation for runtime functions. 15 years ago
theraven 7336df75bc Added some more comments, C++ include guards around runtime.h. 15 years ago
theraven 73e1e2934b It turns out that Apple chose some confusing and non-intuitive semantics for
catching Objective-C objects in C++ catch statements (i.e. they follow
Objective-C semantics, not C++ semantics, irrespective of whether you use C++
or ObjC syntax).  We now default to Apple-compatible behaviour, but provide a
function that allows users to select the sane semantics if they prefer.

Added a capability bit for the unified exception model, so code can require it.
This is not really required, since any code using it will link against the
ObjC++ personality function and will get a linker failure if it isn't supported.

Also enabled Objective-C++ stuff by default.  This adds a dependency on the C++
standard library (actually on libsupc++, but GNUstep Make wants to link against
libstd++ anyway), which is not ideal.  It can be disabled with:

$ gmake objectiver-cxx=no

I suggest that this is only done by people who know that they will never want
Objective-C++ support.
15 years ago
theraven e0d80861b5 Added some documentation. 15 years ago
theraven bde6bf0e14 Fix truncated comment in header and 'worse than useless' macro.
Both issues pointed out by Jens Ayton.
15 years ago
ericwa a7ea477400 libobjc2: put libobjc compatibility functions in runtime.h marked __attribute__((deprecated)) 15 years ago
theraven 7be9f34619 Fixed @synchronize() with a class that has had an instance used for @synchronize(). 15 years ago
theraven 025688a2d5 Added property_getName(). Added non-portable API documentation. 16 years ago
theraven d70523947b Implement some missing runtime functions. 16 years ago
theraven 9c077368a8 Make sel_copyTypes_np() return the number of types in all cases. 16 years ago
theraven a029fb2af3 Expose sel_copyTypes_np(). 16 years ago
ericwa c604289023 libobjc2: define SEL as const for GCC 16 years ago
theraven 0177ef56e1 Tweak the type encoding stuff a bit. 16 years ago
theraven 5885fd196a Add defines for ObjC types (GNUstep apparently uses them, even though they are not part of the language spec, but the things that they define are, so they only serve to obfuscate code where they are used). 16 years ago
theraven bd58a33b84 Prevent accidental mixing of GNU runtime headers with GNUstep runtime.h. 16 years ago
theraven 77d02d075b Add some missing protocol introspection functions. 16 years ago
theraven fb474dd7f9 Removed hooks from runtime.h that are in hooks.h 16 years ago
theraven a9bdab1f44 Reverted last commit - breaks the build with clang.
Fixed the definition of objc_msgSendSuper().

Tweaked the -dealloc implementation for hidden classes used for locking so that @synchronize(self) will work in a -dealloc method.
16 years ago
theraven 2d84b96a72 Tidied up some bits by creating private headers for private data structures.
Imported selector table code frm the Étoilé runtime.  We can now make dispatch type dependent with a -D switch.  Not enabled yet, but it will be enabled in a warning mode soon - I consider preferable to the existing GNU and Apple solution of corrupting the stack.
16 years ago
rfm 607bc433c9 Fix instance variable lookup to match OSX 16 years ago
theraven ae11414b4d Handle case where @synchronized is used with a class. 16 years ago
theraven 16c3ec8f46 Correctly declare the runtime hooks as extern. Was causing copies of them to show up in the uninitialised data section of libraries that included runtime.h, clobbering the default version and causing a crash when the runtime tried to call them. 16 years ago
qmathe 8b9c723905 Added object_setClass 16 years ago
theraven 4771cd4e43 Added selector lookup functions. Implementations by Eric Wasylishen. 16 years ago
theraven baed61c3e6 Added property support functions, NSBlock base classes and uncaught exception handler. 16 years ago
theraven bba507bf70 Removed incorrect comment from blocks runtime. Tweaked runtime.h to make it show the new functions even in GNU-compat mode and made sure the object-substitution hook is called even when object substitution can't be used, so GNUstep can use it for the 10.5 NSObject runtime functions. 17 years ago
theraven 3038121d27 Flagged non-Apple-compatible parts of the API as non-portable. 17 years ago
theraven 323e3dfaeb Added new runtime library, based on GCC 4.4 libobjc, libobjc_tr and Objective2.framework. 17 years ago