63 Commits (06ff4be6a9028d07259867d9f08e11359d06bb17)

Author SHA1 Message Date
theraven 06ff4be6a9 More build system tidies. 15 years ago
theraven 496c66bd0b Fix linker errors. 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 ed9d0f33c9 Actually install the header that's referenced. 15 years ago
theraven 7e465eb325 Tweak building without ObjC++ support a bit. 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 e0719a9c62 Added Objective-C++ exception handling support. Allows throwing Objective-C objects with throw or @throw and catching them with catch() or @catch. 15 years ago
theraven df4570b90e Change language dialect to gnu99 from c99 - earlier commit required this, but I
forgot to commit the GNUmakefile change.  Note: the anonymous structure field
extension that requires this is part of C1X, so we can probably change this to
--std=c11 once C1X is actually finalised.
15 years ago
theraven 8db63b976f Initial work on developer mode (allows classes to be replaced at run time with new versions, by cooperating IDEs). This support is part of ongoing work to provide fix-and-continue functionality with Clang / Cling and LanguageKit. 15 years ago
theraven 4ab4b4033b Bumped version to 1.1 15 years ago
theraven a83428b883 Move toydispatch into libobjc2.
Some build system tidies.

Add -retain / release to Protocol.

Initial work on clang-specific makefile.
15 years ago
theraven ee32f78b0a Tweaked the GNUmakefile to (more or less) work with gcc.
Fixed block introspection for the new (Apple-compatible) ABI.
16 years ago
ericwa 39b0655877 libobjc2: another makefile hack to get mingw to declare strdup 16 years ago
ericwa 56341816a5 libobjc2: Makefile hack to get the __sync_* GCC builtins to work on Windows 16 years ago
rmottola c7673659bb added package information to the makefile 16 years ago
ericwa 9e64fb7828 undo accidentally commited stuff 16 years ago
ericwa dbb8ea2090 add deprecated sel_eq function for compatibility 16 years ago
theraven 033676b9e7 Enable type-dependent dispatch by default. Stack corruption is bad, m'kay? 16 years ago
theraven 00004fe5f3 More tweaks to the GNU-compatibility encoding stuff. This API is too broken to use, but GNUstep seems to want it. 16 years ago
theraven 0177ef56e1 Tweak the type encoding stuff a bit. 16 years ago
theraven ab59ce1d33 Add feature test APIs to libobjc2. 16 years ago
rfm cd1d274928 Remove usage of -march=native since it doesn't work with most compilers, and
also causes problems with builds on server farms where the build machine is
not the machine the code will run on.
16 years ago
ericwa 52bdf1484f libobjc2: add dummy objc.h and objc-api.h headers which simply include runtime.h 16 years ago
ericwa 7a2c302c5f libobjc2: tweaks to build on Windows 16 years ago
theraven 06015757a7 Type dependent dispatch now actually works. 16 years ago
theraven f375d20d7a Add support for catching C++ (and Java / Ada) exceptions in Objective-C. 16 years ago
theraven eb84a02e97 Reinstate legacy_malloc in the build, unless you disable legacy nonsense. 16 years ago
theraven b8543a1e13 Removed files that should have gone in the last commit. 16 years ago
theraven 07758fe521 Removed last bits of legacy code from libobjc2. Added new exception handling implementation. 16 years ago
theraven 779b28abeb Lots of tidying, removing legacy stuff. 16 years ago
theraven 4ee07676cc Added rewritten encoding parser. The functions that function pointers as arguments and parse compound types should be exposed via the public interfaces, or possibly moved to a separate library - they are generally useful. 16 years ago
theraven b1b9baf382 Finished rewrite of message sending. Deleted lots of legacy stuff. 16 years ago
theraven 9dcfe43e69 Removed DLL entry point. The Win32 API docs say that this function is optional, and the implementation was doing exactly the same thing as if it was absent. High quality coding at its finest. 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 7c72069fd9 Rewrote ABI compatibility testing. Makes it easier to define new, incompatible ABIs in future without breaking everything. 16 years ago
theraven fdc1f1e916 Removed more unused code. 16 years ago
theraven 67741f3f68 Removed hash.c - no longer used. 16 years ago
theraven a1329e22de A bit more class table tidying. 16 years ago
theraven 7f6f798074 Rewrote some of the class table code to be slightly cleaner. 16 years ago
theraven 3672f04ea3 Default to installing libobjc2 headers 16 years ago
theraven e482b6986f More fixes for the new dtable. Now passing all of the EtoileFoundation tests, which do lots of things involving categories, so make a good stress test.
No longer installs headers by default.  This is because GNUstep Make notices when the objc headers have changed (because GNUstep includes them) and so reinstalling libobjc2 was requiring a complete recompile of anything that you tried to build, even if you only changed one line.  A better fix for this would be for install to use cmp or diff to check if the header has been modified before installing it, but I'm too lazy to do that right now.
16 years ago
theraven ded142ebff Add empty sarray.h - for some reason GNUstep is trying to #include this file (no idea why, as nothing in GNUstep actually uses anything from it). Adding an empty version should prevent breakage for now. 16 years ago
theraven cc41e05598 Revert accidental changes to make file. 16 years ago
theraven b04cccf46b Fixed some issues in runtime.c when looking up methods. This fixes some issues with DO.
Removed GNU dtable and sparse array implementations, replaced entirely now with versions based on the Étoilé runtime.  Performance is roughly equivalent in microbenchmarks, memory usage is significantly lower (Gorm goes from 95MB to 50MB on my machine - this will be even more pronounced on 64-bit systems), which should improve cache usage considerably.  Still room for some performance tuning, however.
16 years ago
theraven 0d78186238 Some bug fixes and tidies.
I now have an out-of-tree replacement for the dtable stuff, so sarray.{h,c} will be going away soon.  The replacement offers similar (slightly worse currently) performance in microbenchmarks, but uses half as much memory (Gorm goes from 95MB to 48MB on my machine).  This will be committed once it's been tweaked a little bit.
16 years ago
theraven 0045ce0cbd Install slot.h. 16 years ago
theraven 7b8b3839df More refactoring. 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
theraven bfbd52709b Fixed off-by-one error in hash table enumerator, which was causing one class to fail to be resolved. 16 years ago
rfm 45b2641793 allow link with toydispatch 16 years ago