theraven
39b6c20d5e
Fix missing unlock.
...
Submitted by: Nick Tuckett
2013-12-13 14:05:39 +00:00
theraven
3f94730ba8
Define ENOTSUP in the case where it actually is used if it isn't defined.
2013-07-24 18:23:05 +00:00
theraven
e6d4229169
Don't forget to expand the tracing dtable...
2013-07-24 10:50:43 +00:00
theraven
68a4607f16
Define ENOTSUP if it isn't defined already.
2013-07-11 15:38:02 +00:00
theraven
f50bc6cf33
Added support for tracing message sends to the runtime.
...
Currently x86-64 only.
2013-06-29 11:05:31 +00:00
theraven
eb234ea26a
Fix the case where the number of selectors grows to more than 2^16 and we need
...
to fall back to 3-level dtables.
Added a test case that registers far more selectors than a sane program
contains and tries to use them.
2013-01-14 15:07:23 +00:00
theraven
ca25388b37
Fix a lock-order reversal where one thread calls some dtable-manipulating
...
function while another is initializing.
2013-01-12 16:29:20 +00:00
theraven
85fd42dd5a
Fix an infinite loop when first sending a message to a class that has a hidden class.
2012-12-11 17:12:08 +00:00
theraven
304593924f
Add missing unlock.
...
Patch by Philippe Roussel!
2012-09-15 11:19:21 +00:00
theraven
2d835cffa6
Fix the lock order when sending +initialize, so that we don't hold a lock that
...
is meant to protect a runtime data structure while trying to acquire a lock
that must be held when running user code that may take an indeterminate amount
of time and may trigger deadlocks.
2012-08-13 14:58:58 +00:00
theraven
855f2601c9
Fix some corner cases where exceptions are thrown through +initialize.
2011-10-25 13:32:47 +00:00
theraven
27452f82f0
Some bug fixes.
2011-10-24 17:17:33 +00:00
theraven
26d86e101c
Inherit +initialize methods.
2011-09-15 18:43:27 +00:00
theraven
8af52846b7
Small object (hidden in a pointer) support.
2011-07-26 17:39:13 +00:00
theraven
7b6ba21ce5
Small bug fixes:
...
- Don't call C++ constructors if they don't exist.
- Don't check the owner of retain / release methods if they are not implemented.
- Add arc.m as a file to ignore when checking for GC compatibility.
2011-07-04 11:28:33 +00:00
theraven
e34be81404
Fix fast-path test to work with subclasses correctly.
2011-07-03 15:29:52 +00:00
theraven
34f7baf8d7
Added a fast path for ARC. Now, if a class implements ARC-compatible retain / release / autorelease methods, we don't call them at all. Instead, we inline them in the ARC accessors. This avoids all of the overhead of the message send (lookup and call) and should make ARC quite a bit faster than manual reference counting.
2011-07-03 11:14:29 +00:00
theraven
ad16172625
First pass at implementing Apple-compatible GC using Boehm. Still needs some tidying, but the following work:
...
- __strong pointers, preventing objects from being freed
_ __weak pointers are automatically freed when the last remaining __strong pointer goes away
- objc_gc_{retain,release}_np() functions, which can be used to implement CFRetain() and CFRelease() (adds an reference count - the object will not be collected until after its last retain is gone.
2011-05-22 23:02:04 +00:00
theraven
12385fcb1e
Tidy up low memory profile to use slots directly.
2011-04-28 11:59:18 +00:00
theraven
709f238364
Sync on the metaclass, not the class, since that's what we're actually testing...
2011-04-20 09:40:48 +00:00
theraven
f9d1b5f356
Clean up the low memory profile. Now passes all GNUstep-base and EtoileFoundation tests, just like the default profileand uses 5-10% less (total) RAM in GORM. Worth benchmarking to see how much performance this costs.
...
Updated the release announcement.
2011-04-19 16:27:58 +00:00
theraven
7b49755964
Dtable cleanup cleanups.
2011-04-19 10:55:10 +00:00
theraven
bad36445e3
Improve efficiency of dtable updates from categories.
...
Make +initialize sending exception safe.
2011-04-19 09:50:41 +00:00
theraven
987ab88a94
Don't do hidden-class transforms for classes, just dangle the look-aside data off the class structure.
...
Individually lock classes so that +initialize can be sent concurrently to two different classes in two different threads.
2011-04-17 17:31:37 +00:00
theraven
d51500184c
More cleanups. Stop using __ identifiers for internal stuff now that it's properly marked private and we don't have to worry about conflicts.
2011-04-14 16:44:34 +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
a2db6f58be
Made the selector name field into a union of the name (unregistered selectors) and the selector id / index (registered selectors), to more accurately reflect how it is used in the code.
2011-03-15 17:27:26 +00:00
theraven
e11e8dee46
Tweak ordering when creating dtables to fix an irritating corner case in +initialize calls.
2011-03-09 14:43:24 +00:00
theraven
7be9f34619
Fixed @synchronize() with a class that has had an instance used for @synchronize().
2010-10-04 17:44:17 +00:00
theraven
e9b129d878
Added low memory profile to libobjc2. This uses a more NeXT-style dtable design, which gives better memory usage at the cost of (significantly) worse worst-case performance. The memory savings seem to be only about 10% in the apps I've tested (Gorm, edlc), so it's probably not worthwhile, but it might be useful for someone finding stuff is just starting to swap...
2010-08-15 22:30:32 +00:00
theraven
121e14a3b8
Small cleanup of dtable code.
2010-06-30 11:49:19 +00:00
theraven
0e374db1db
Added support for type-dependent dispatch to libobjc2.
2010-06-29 12:42:20 +00:00
theraven
779b28abeb
Lots of tidying, removing legacy stuff.
2010-06-06 21:11:25 +00:00
theraven
b1b9baf382
Finished rewrite of message sending. Deleted lots of legacy stuff.
2010-06-03 15:17:12 +00:00
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...
2010-06-02 22:25:12 +00:00
qmathe
55a62b527f
Removed unused variable that prevents compilation by being treated as an error
2010-05-22 14:01:17 +00:00
theraven
8a451d212c
More dtable fixes - now the EtoileFoundation tests work when compiled with GCC too. Hopefully that's all of the irritating corner cases in category loading dealt with...
2010-05-21 19:00:02 +00:00
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.
2010-05-21 13:49:19 +00:00
theraven
7a9b105817
Fixed missing ! in dtable construction code, which meant that class methods were being preferred to category methods.
2010-05-19 14:33:55 +00:00
theraven
c40f9e84f2
Return NULL instead of "" from sel_getTypes_np() - matches behaviour of sel_get_types() and makes more sense.
2010-05-19 12:56:46 +00:00
theraven
1a60fabf96
More 64-bit fixes.
2010-05-17 15:22:19 +00:00
theraven
d36b939232
Actually commit the new dtable implementation this time...
2010-05-16 21:32:43 +00:00