theraven
0c8faf1961
Sometimes people assign things like classes to __weak pointers. This confuses the GC, because it expects to be able to finalize / delete things that are the target of disappearing links.
15 years ago
theraven
4136ad8413
Do an exhaustive collection before dumping stats in response to a signal.
15 years ago
thebeing
72ec07268d
Work around GCC error for inline assembly.
15 years ago
theraven
0c72e2e418
Use typed allocations for the hash table entries. This makes sure that the GC won't treat the jump table bitfield as a pointer.
...
Store the refcount structures inside the hash table, rather than in a chained structure. This uses less space and should be easier for the GC to scan (less cache used).
15 years ago
thebeing
32b4432ebc
Add correct defines for threaded boehm-gc on linux.
15 years ago
theraven
3769a48cd7
Add an ugly hack to prevent a clever optimiser from realising that it can completely optimise objc_clear_stack() away.
15 years ago
theraven
5b2c24bed3
If LIBOBJC_DUMP_GC_STATUS_ON_SIGNAL is set, dump the GC state in response to kill -$(LIBOBJC_DUMP_GC_STATUS_ON_SIGNAL) {pid}.
15 years ago
theraven
cd9ac97fb8
Refine typed allocations slightly.
15 years ago
theraven
0cb2ea01bc
Simplify the finalization code slightly.
15 years ago
theraven
5e60899d8e
Allow tweaking GC info dump on exit from an environment variable.
15 years ago
theraven
306e10edde
Tidy up some of the left-over debugging code for GC mode.
15 years ago
theraven
e05c9c2ff5
More GC fixes
15 years ago
theraven
33b7ecb2f8
Don't call -finalize if it doesn't exist.
15 years ago
theraven
fcc47bc7ce
Fix building without GC support. Still need to make sure that some of the GC functions always work, since they are expected to be no-ops in non-GC mode.
15 years ago
theraven
ae4eea1597
Some bug fixes for GC mode.
15 years ago
theraven
898707bf94
Added function for getting reference count.
15 years ago
theraven
368bf3bd1d
Add reallocate function.
15 years ago
theraven
88c075893f
Call ObjC++ destructors when finalising an object.
...
Add public APIs required to implement [NSGarbageCollector -enable] and [NSGarbageCollector -disable].
15 years ago
theraven
3385e7a724
Remove dead code.
15 years ago
theraven
9015795dde
Use explicitly typed memory for instances.
15 years ago
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.
15 years ago
theraven
2329b7a1ec
Change spelling to be consistent with Apple.
15 years ago
theraven
929f8f95b4
Improved a few GC functions.
...
Added objc-auto.h header, providing (documented) public interfaces to this
functionality.
15 years ago
theraven
ef03a4bdb0
Add objc_gc_allocate_collectible() function, which can be used to implement NSAllocateCollectible().
15 years ago
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.
15 years ago