Commit Graph

417 Commits

Author SHA1 Message Date
theraven
a4decfa4e3 Add hidden class -dealloc method as -finalize as well. 2011-05-23 17:38:31 +00:00
theraven
9015795dde Use explicitly typed memory for instances. 2011-05-23 17:26:44 +00:00
theraven
9dcc66f7f6 Make sure that associated objects and blocks use GC-scanned memory in GC mode.
Blocks do not yet support __weak bound variables.  This needs fixing before the release.
2011-05-23 16:24:45 +00:00
theraven
2329b7a1ec Change spelling to be consistent with Apple. 2011-05-23 12:08:45 +00:00
theraven
929f8f95b4 Improved a few GC functions.
Added objc-auto.h header, providing (documented) public interfaces to this
functionality.
2011-05-23 11:11:51 +00:00
theraven
ef03a4bdb0 Add objc_gc_allocate_collectible() function, which can be used to implement NSAllocateCollectible(). 2011-05-23 09:46:37 +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
4f31ed8acd Some tweaks to optimisation order. 2011-05-15 13:06:05 +00:00
theraven
2912bae0a7 Ooops, another debugging line left in which caused a pass not to run... 2011-05-14 18:01:38 +00:00
theraven
b7986e9efa Ooops. Accidentally left the bit that actually did the optimisation commented out. 2011-05-14 17:21:39 +00:00
theraven
8f423d0e29 Fix non-fragile ivar short-circuiting (i.e. hard-code the CORRECT ivar addresses, don't make foo and foobar have the same offset). 2011-05-14 16:12:46 +00:00
theraven
5705845e98 Fixed some bugs with the optimisation passes and introduced support for automatically running them (requires LLVM 3 + a patch that is not yet in trunk, but should be soon). 2011-05-14 15:32:26 +00:00
theraven
dd81cda462 Fix autocompletion bug. 2011-05-11 10:44:34 +00:00
theraven
76d36e88eb Fix bug in selector type hashing algorithm. We can't use the numbers, because people don't always provide them correctly. 2011-05-07 09:40:33 +00:00
theraven
b4eefb5cf2 Created 1.4 release announcement. 2011-05-06 12:32:36 +00:00
theraven
84fdd38b98 Some tweaks to the release announcement. 2011-05-05 21:01:36 +00:00
theraven
34aa9f9455 Allowed LLVM optimisations to build against both LLVM 2.9 and LLVM 3.0. 2011-05-05 20:49:47 +00:00
theraven
f6697e5f86 Remove spurious &s. 2011-05-05 11:24:45 +00:00
theraven
5b77c3e694 Add +class and -self to Protocol. PyObjC breaks if these don't exist. 2011-05-04 17:27:17 +00:00
theraven
d12de81cd6 Remove opts from default build - they must now be explicitly built.
Don't crash if objc_disposeClassPair() is called on a class that is not get
registered with the runtime.
2011-05-04 12:53:04 +00:00
theraven
be68d81286 Check that the LLVM source directory exists before changing to it. 2011-04-30 12:38:34 +00:00
theraven
34d4c6b12e Updated release announcement. 2011-04-29 14:46:37 +00:00
theraven
76ef007766 Actually return the correct value in case of races. 2011-04-29 11:21:59 +00:00
theraven
94f72f539b Fixed thread safety for constructing property attributes. 2011-04-29 11:19:42 +00:00
theraven
8ee4d9c38a Added implementation of property_getAttributes(). This is a horrible interface, both to implement and to use. We should add some better interfaces. 2011-04-28 20:36:36 +00:00
theraven
c6f0651609 Implemented objc_copyProtocolList(). 2011-04-28 18:53:11 +00:00
theraven
79b67ad044 Added missing ivar access functions. 2011-04-28 18:39:48 +00:00
theraven
12385fcb1e Tidy up low memory profile to use slots directly. 2011-04-28 11:59:18 +00:00
theraven
535ba87a8e Store the selector, not the type encoding, in slots. 2011-04-22 12:13:28 +00:00
qmathe
bd48461fb9 Fixed GNUmakefile to ensure legacy symbols are visible 2011-04-22 12:02:56 +00:00
theraven
15ddbdfd71 Added meta-pass that runs all of the LLVM optimisations. 2011-04-22 12:01:28 +00:00
theraven
928e7f3971 Try again... 2011-04-22 11:51:15 +00:00
theraven
6d112bb632 Don't accidentally default to compiling without legacy compat. 2011-04-22 11:45:44 +00:00
theraven
649ce9dd7f Updated release announcement.
Made the LLVM optimisations build by default (if LLVM is installed).
2011-04-22 11:38:16 +00:00
theraven
9d5452b147 Fixed LLVM passes to compile with recent LLVM.
Made class caching pass cache classes in a static variable if the original class is not available.
2011-04-22 11:06:33 +00:00
theraven
52381f163b Make sure locks are initialised before using them and destroyed afterwards. 2011-04-20 12:45:15 +00:00
theraven
975596f764 Updated documentation. 2011-04-20 09:59:41 +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
f0974cb415 Cosmetic fix - use the correct union field, not an explicit cast. 2011-04-19 14:58:44 +00:00
theraven
789219a2cb Expose the low memory profile as an option in the dtable. 2011-04-19 10:55:59 +00:00
theraven
4fc7030973 Remove some obsolete FIXMEs. 2011-04-19 10:55:35 +00:00
theraven
7b49755964 Dtable cleanup cleanups. 2011-04-19 10:55:10 +00:00
theraven
f5f0816777 Make the selector hash depend on the types as well as the name - should reduce
hash collisions between typed and untyped versions.
2011-04-19 10:54:00 +00:00
theraven
c6556fd230 Remove FIXME that was fixed in last commit. 2011-04-19 09:57:52 +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
9fd1d26c00 Removed debugging statement that should not have been added in the first place... 2011-04-19 09:29:50 +00:00
theraven
af85d8496d Actually wait for +initialize to finish before allowing any thread to send a message to a class (I broke this when I rewrote the dtable code to use a per-class lock - the lookup forgot to acquire the correct mutex.) 2011-04-18 17:30:24 +00:00
theraven
d7056f6de2 Simplify @synchronize() and improve efficiency (space and time). 2011-04-17 18:04:58 +00:00
theraven
5ea9367f3d Tweak alignment. 2011-04-17 17:31:56 +00:00