21 Commits (18e8d1bfc132628ab18c53135779ea081c4ce265)

Author SHA1 Message Date
theraven 0284155f2d Added a hook that defines the behaviour when you call a method with the wrong signature. 16 years ago
theraven 42a545fc7c In some irritating circumstances, the load order can cause a +load message to trigger other code, which sends messages with selectors that have not been mapped yet.
The runtime was handling the message lookup correctly in this case, but only as a side-effect of the fallback code from when type-dependent dispatch is not possible.  This resulted in a confusing warning message, telling you that you were calling a method with an incorrect signature, when the two signatures that it printed were the same.

This case is now handled correctly, so the warning disappears (unless you really are calling a method with the wrong signature and have TDD enabled).
16 years ago
theraven 943ed5e714 Some source tidies. 16 years ago
theraven 2cc96a6f7e Fix message forwarding by, for example, actually calling the public forwarding hook, instead of one that isn't exposed to GNUstep... 16 years ago
theraven 378c7d3a6c Crash in the caller, instead of in the message lookup, when the method does not exist and there is no forwarding hook. 16 years ago
theraven 0e374db1db Added support for type-dependent dispatch to libobjc2. 16 years ago
theraven b1b9baf382 Finished rewrite of message sending. Deleted lots of legacy stuff. 16 years ago
theraven 1a60fabf96 More 64-bit fixes. 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 ede942cdd8 Simplified profiling even more. Now should allow inlining of manually-cached IMPs. 16 years ago
theraven 160d1ce829 Added cachable version of the message-to-super lookup function. Clang now calls this in preference to the other one when -fobjc-nonfragile-abi is specified. 16 years ago
theraven 6459292a40 Simplified profiling system and enabled it by default. This should be safe, because it no longer depends on dladdr() and friends (which don't work reliably anywhere), and instead expects the profiling modules to register their own symbol table. 16 years ago
theraven fb26e9a9ef Disable sender-aware dispatch - it breaks some code. 16 years ago
rfm 301c01b2ae slightly more rigorous dtable handling. 16 years ago
theraven eee7956bce Cleaner version of the last fix. 16 years ago
theraven d4fe4f522e Fixed typo in comment in runtime.c.
Fixed unsafe dtable access in message lookup.
16 years ago
theraven 202006f6b8 Removed some dead variables. 16 years ago
theraven f8b98a73a2 Bug fixes in libobjc2:
- nil_method now returns 0, not receiver.

- Metaclasses actually get their dtables installed with the new ABI.  For some reason this wasn't being done, so class messages didn't work with the new ABI.  Now they do and (at least some) nontrivial programs work.

- Undid commenting out of the code setting the fast ivar access pointers.  I can't remember why this was commented out, but it seems not to break anything.  I have an LLVM pass that makes compiled code access these pointers, but it's not committed yet.
16 years ago
theraven 1e1e23827c Fixed new ABI method lookup function for +initialize safety. 17 years ago
theraven 323e3dfaeb Added new runtime library, based on GCC 4.4 libobjc, libobjc_tr and Objective2.framework. 17 years ago