21 Commits

Author SHA1 Message Date
theraven
6317b79a10 Implemented the new exception ABI, and a load of tests for it. This is used by
clang trunk if -fobjc-runtime-1.7 is specified and provides significantly
better interoperability with foreign exceptions.

Note: Most of the exception tests will not pass with gcc or clang < 3.3.  They
test things that are impossible to implement quite correctly with the
GCC-compatible exception ABI.

Also updated the release notes to reflect recent improvements.
2013-01-12 13:17:36 +00:00
theraven
c6eede8179 GCC-compatibility tweak in EH. 2012-07-12 18:10:51 +00:00
theraven
6cea966cad Remove some accidentally-committed debug stuff. 2011-11-09 21:10:51 +00:00
theraven
9490b1b84e Implement ARM EH support, fix objc_msgSend() to work on ARM. 2011-11-09 21:03:35 +00:00
theraven
8af52846b7 Small object (hidden in a pointer) support. 2011-07-26 17:39:13 +00:00
theraven
9ef84a982c Remove redundant include. 2011-06-24 14:32:15 +00:00
theraven
6c7cf4a5a6 Add visibility attributes on all internal functions so that we aren't ever exporting them outside of libobjc. 2011-04-14 12:25:17 +00:00
theraven
600e970dea Separate ObjC++ support out into libobjcxx. Now code that doesn't need ObjCXX support can safely ignore it again. 2011-04-05 17:21:30 +00:00
theraven
7e465eb325 Tweak building without ObjC++ support a bit. 2011-03-21 17:44:51 +00:00
theraven
3ccb4240cc Fix getting Objective-C objects out of C++ exceptions. 2011-03-20 21:20:42 +00:00
theraven
e0719a9c62 Added Objective-C++ exception handling support. Allows throwing Objective-C objects with throw or @throw and catching them with catch() or @catch. 2011-03-20 20:38:12 +00:00
theraven
fc28010846 ...but don't catch foreign exceptions in catch statements for the boxing class's superclass. 2011-03-16 16:35:24 +00:00
theraven
4e5578b0be Allow boxed foreign exceptions to be caught in explicit catch statements. 2011-03-16 16:22:30 +00:00
theraven
d6455e2a65 More EH tweaks. New ABI now uses "@id" for id catches and NULL for catchalls. Code compiled with GCC and clang with the old ABI will continue to use NULL for catchalls and id catches, which means that C++ exceptions will be caught in their boxed form here and must be explicitly rethrown. 2011-03-16 15:48:06 +00:00
theraven
45c428f9a3 Allow the boxed exception object to rethrow itself, if it knows how. This means that a C++ function can throw a C++ object, we can box it in an ObjC object for passing through Objective-C stack frames, and then unbox it to catch it in C++ code. 2011-03-16 15:04:26 +00:00
theraven
943ed5e714 Some source tidies. 2010-08-15 11:17:00 +00:00
theraven
7ac0904a1f Don't leak memory when throwing exceptions. 2010-07-16 11:49:51 +00:00
theraven
7d0d599241 Fix handling of cleanups while unwinding for exception throwing. 2010-07-15 17:47:13 +00:00
theraven
f4e7a7bf5c Return the correct thing to exception handlers. 2010-06-30 12:09:42 +00:00
theraven
f375d20d7a Add support for catching C++ (and Java / Ada) exceptions in Objective-C. 2010-06-30 12:02:53 +00:00
theraven
07758fe521 Removed last bits of legacy code from libobjc2. Added new exception handling implementation. 2010-06-29 21:46:20 +00:00