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
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
c7bff27827
Removed typed stream support; it's no longer used.
16 years ago
theraven
c3a6b866bb
Added toydispatch to libobjc. This is an implementation of a tiny subset of libdispatch, requiring no kernel support beyond a standard pthread implementation. It is intended to be used for running asynchronous book-keeping tasks for libobjc, but might also be useful for other things so it's compiled as a separate library.
16 years ago
theraven
5b4974f259
Made debug warning just a warning.
16 years ago
theraven
bdf97cf64e
Added hopscotch table implementation and rewrote the class table to use it. This is done so that the class table and protocol tables can share the same code (currently there is no protocol table).
...
Note that concurrent resizing has not yet been implemented. That means that there is a hard limit on the number of classes that can be loaded. This is currently set to quite a small number for testing, to stress the hash table. If you're experiencing problems as a result, then please let me know and I will increase it.
16 years ago
theraven
6a94efd4cf
Removed debugging lines from GNUmakefile that were breaking the build. Thanks to RFM for spotting this...
16 years ago
qmathe
bf2521da40
Fixed undefined pthread references when gnustep-base configure tests whether 'objc really works'
16 years ago
theraven
baed61c3e6
Added property support functions, NSBlock base classes and uncaught exception handler.
16 years ago
theraven
b69b7c05d8
Removed unwind.h dependency. Tidied up a few warnings generated by clang.
17 years ago
rfm
3c43365991
Use _XOPEN_SOURCE rather than _XOPEN_VERSION
17 years ago
theraven
9c65b1c84c
Added types support to blocks runtime, tidied up UNIX98 stuff.
17 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
323e3dfaeb
Added new runtime library, based on GCC 4.4 libobjc, libobjc_tr and Objective2.framework.
17 years ago