Commit Graph

  • 85272c48b9 Improve some comments, minor tweaks to GC. theraven 2011-06-23 10:30:10 +0000
  • 1f681c8464 Added some GC docs to the readme. theraven 2011-05-30 15:14:20 +0000
  • 61a2ae0f54 Make the canary check look at the address where the canary was stored, not the word before where the canary was stored. theraven 2011-05-30 11:19:44 +0000
  • 1c847cedd1 Remove GC_no_dls for now. This can be safely set if all static variables used to store pointers are id or are explicitly marked __strong, which is not (yet) the case in GNUstep. theraven 2011-05-30 11:13:25 +0000
  • 851328268c Expand the coverage of canaries to object allocations, expand logging to object allocations and all deallocations. It's now possible to implement malloc_history entirely parsing the dump file (or doing /dev/fd style tricks send it straight to a monitoring process). theraven 2011-05-29 22:13:35 +0000
  • c9e54c382d Tweak auto-copy code. Now it only copies classes that are explicitly registered to be copied on heap assignment. By default, this is just _NSConcreteStackBlock. Other classes can be registered (LanguageKit should register BlockClosure to make sure that Smalltalk works). theraven 2011-05-29 21:59:50 +0000
  • b296b18571 Improvements to GC mode: theraven 2011-05-29 21:28:27 +0000
  • ff1e691c3b And some more... theraven 2011-05-29 14:38:14 +0000
  • 4a78269815 Removed debugging line accidentally committed. theraven 2011-05-29 14:36:05 +0000
  • 4ffb19230f Make sure that the statics used to store internal tables are marked as roots. theraven 2011-05-29 14:27:41 +0000
  • 8f530849fd When assigning a pointer to an object that is allocated on the stack to the heap, send a -copy message. This lets you cast blocks to id and then assign them to ivars without anything breaking. Apple's 'solution' to this is to segfault, which is not particularly elegant. This code is also quite an ugly hack (it just checks whether the object is allocated within a couple of pages of the current stack frame), so I might remove it before release. theraven 2011-05-29 13:53:15 +0000
  • e7767baf50 Don't send retain / release messages in GC mode when copying object pointers into blocks. theraven 2011-05-29 13:50:46 +0000
  • d1199844cb Lock the GC mode once something has queried it. All of the GNUstep code that does run-time detection of whether to use GC calls objc_collecting_enabled() (sometimes indirectly, via NSGarbageCollector) to see if we're in GC mode. After any of these calls, it is not safe to switch modes. theraven 2011-05-28 15:10:03 +0000
  • fe5d1b892a Tweak GC check, make sure GC_init() is called even when ObjC code isn't using GC (stuff internal to the runtime may be) theraven 2011-05-28 14:38:02 +0000
  • d73eb8f634 Expose another function in the header. theraven 2011-05-28 13:24:24 +0000
  • 6d78040180 Initial support for running finalizers in a separate thread. theraven 2011-05-28 13:07:11 +0000
  • 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. theraven 2011-05-28 11:04:47 +0000
  • e661e203d4 Re-enable function inlining. thebeing 2011-05-27 19:12:18 +0000
  • 1653751263 Use -lgc on linux platforms. thebeing 2011-05-27 18:11:53 +0000
  • 4136ad8413 Do an exhaustive collection before dumping stats in response to a signal. theraven 2011-05-27 18:06:39 +0000
  • 72ec07268d Work around GCC error for inline assembly. thebeing 2011-05-27 18:06:20 +0000
  • 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. theraven 2011-05-27 17:40:58 +0000
  • 32b4432ebc Add correct defines for threaded boehm-gc on linux. thebeing 2011-05-27 15:27:05 +0000
  • 2d9f41aa94 If we're linking against Boehm GC, then we may as well allow it to collect the runtime's hash tables, rather than doing that manually. theraven 2011-05-27 14:54:06 +0000
  • 7deef6854a Tweaked release announcement to reflect the fact that GC is built by default unless explicitly disabled. theraven 2011-05-27 14:30:57 +0000
  • 3b96938128 Removed GCKit. theraven 2011-05-27 14:27:59 +0000
  • 3769a48cd7 Add an ugly hack to prevent a clever optimiser from realising that it can completely optimise objc_clear_stack() away. theraven 2011-05-27 09:44:12 +0000
  • 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}. theraven 2011-05-26 22:08:27 +0000
  • cd9ac97fb8 Refine typed allocations slightly. theraven 2011-05-26 18:30:39 +0000
  • 0cb2ea01bc Simplify the finalization code slightly. theraven 2011-05-26 18:05:05 +0000
  • 5e60899d8e Allow tweaking GC info dump on exit from an environment variable. theraven 2011-05-26 14:28:47 +0000
  • c6fc399a73 Enable GC support by default. You can still turn it off with boehm_gc=no. theraven 2011-05-26 14:25:15 +0000
  • 3508ab6ccf Fixed ABI compatibility test. theraven 2011-05-26 14:24:36 +0000
  • 306e10edde Tidy up some of the left-over debugging code for GC mode. theraven 2011-05-26 14:17:31 +0000
  • e05c9c2ff5 More GC fixes theraven 2011-05-26 13:28:31 +0000
  • 33b7ecb2f8 Don't call -finalize if it doesn't exist. theraven 2011-05-25 17:23:54 +0000
  • 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. theraven 2011-05-25 12:25:27 +0000
  • 01237af0fc Add GC-aware property accessors (in GC mode, we don't need all of the atomic juggling, because the GC looks after that stuff for us). theraven 2011-05-25 12:15:58 +0000
  • ae4eea1597 Some bug fixes for GC mode. theraven 2011-05-25 10:09:13 +0000
  • 22c20eb930 Removed spurious debugging line. Removed left-over check that stopped GC_Optional modules from enabling the GC. theraven 2011-05-24 13:40:51 +0000
  • 898707bf94 Added function for getting reference count. theraven 2011-05-24 13:11:25 +0000
  • 368bf3bd1d Add reallocate function. theraven 2011-05-24 13:02:18 +0000
  • 88c075893f Call ObjC++ destructors when finalising an object. theraven 2011-05-24 12:38:40 +0000
  • 444688895a Updated Makefile to compile correctly again. theraven 2011-05-24 09:44:13 +0000
  • 3385e7a724 Remove dead code. theraven 2011-05-23 17:39:10 +0000
  • a4decfa4e3 Add hidden class -dealloc method as -finalize as well. theraven 2011-05-23 17:38:31 +0000
  • 9015795dde Use explicitly typed memory for instances. theraven 2011-05-23 17:26:44 +0000
  • 9dcc66f7f6 Make sure that associated objects and blocks use GC-scanned memory in GC mode. theraven 2011-05-23 16:24:45 +0000
  • 2329b7a1ec Change spelling to be consistent with Apple. theraven 2011-05-23 12:08:45 +0000
  • 929f8f95b4 Improved a few GC functions. theraven 2011-05-23 11:11:51 +0000
  • ef03a4bdb0 Add objc_gc_allocate_collectible() function, which can be used to implement NSAllocateCollectible(). theraven 2011-05-23 09:46:37 +0000
  • ad16172625 First pass at implementing Apple-compatible GC using Boehm. Still needs some tidying, but the following work: theraven 2011-05-22 23:02:04 +0000
  • 4f31ed8acd Some tweaks to optimisation order. theraven 2011-05-15 13:06:05 +0000
  • 2912bae0a7 Ooops, another debugging line left in which caused a pass not to run... theraven 2011-05-14 18:01:38 +0000
  • b7986e9efa Ooops. Accidentally left the bit that actually did the optimisation commented out. theraven 2011-05-14 17:21:39 +0000
  • 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). theraven 2011-05-14 16:12:46 +0000
  • 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). theraven 2011-05-14 15:32:26 +0000
  • dd81cda462 Fix autocompletion bug. theraven 2011-05-11 10:44:34 +0000
  • 76d36e88eb Fix bug in selector type hashing algorithm. We can't use the numbers, because people don't always provide them correctly. theraven 2011-05-07 09:40:33 +0000
  • b4eefb5cf2 Created 1.4 release announcement. theraven 2011-05-06 12:32:36 +0000
  • 84fdd38b98 Some tweaks to the release announcement. theraven 2011-05-05 21:01:36 +0000
  • 34aa9f9455 Allowed LLVM optimisations to build against both LLVM 2.9 and LLVM 3.0. theraven 2011-05-05 20:49:47 +0000
  • f6697e5f86 Remove spurious &s. theraven 2011-05-05 11:24:45 +0000
  • 5b77c3e694 Add +class and -self to Protocol. PyObjC breaks if these don't exist. theraven 2011-05-04 17:27:17 +0000
  • d12de81cd6 Remove opts from default build - they must now be explicitly built. theraven 2011-05-04 12:53:04 +0000
  • be68d81286 Check that the LLVM source directory exists before changing to it. theraven 2011-04-30 12:38:34 +0000
  • 34d4c6b12e Updated release announcement. theraven 2011-04-29 14:46:37 +0000
  • 76ef007766 Actually return the correct value in case of races. theraven 2011-04-29 11:21:59 +0000
  • 94f72f539b Fixed thread safety for constructing property attributes. theraven 2011-04-29 11:19:42 +0000
  • 8ee4d9c38a Added implementation of property_getAttributes(). This is a horrible interface, both to implement and to use. We should add some better interfaces. theraven 2011-04-28 20:36:36 +0000
  • c6f0651609 Implemented objc_copyProtocolList(). theraven 2011-04-28 18:53:11 +0000
  • 79b67ad044 Added missing ivar access functions. theraven 2011-04-28 18:39:48 +0000
  • 12385fcb1e Tidy up low memory profile to use slots directly. theraven 2011-04-28 11:59:18 +0000
  • 535ba87a8e Store the selector, not the type encoding, in slots. theraven 2011-04-22 12:13:28 +0000
  • bd48461fb9 Fixed GNUmakefile to ensure legacy symbols are visible qmathe 2011-04-22 12:02:56 +0000
  • 15ddbdfd71 Added meta-pass that runs all of the LLVM optimisations. theraven 2011-04-22 12:01:28 +0000
  • 928e7f3971 Try again... theraven 2011-04-22 11:51:15 +0000
  • 6d112bb632 Don't accidentally default to compiling without legacy compat. theraven 2011-04-22 11:45:44 +0000
  • 649ce9dd7f Updated release announcement. theraven 2011-04-22 11:38:16 +0000
  • 9d5452b147 Fixed LLVM passes to compile with recent LLVM. theraven 2011-04-22 11:06:33 +0000
  • 52381f163b Make sure locks are initialised before using them and destroyed afterwards. theraven 2011-04-20 12:45:15 +0000
  • 975596f764 Updated documentation. theraven 2011-04-20 09:59:41 +0000
  • 709f238364 Sync on the metaclass, not the class, since that's what we're actually testing... theraven 2011-04-20 09:40:48 +0000
  • 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. theraven 2011-04-19 16:27:58 +0000
  • f0974cb415 Cosmetic fix - use the correct union field, not an explicit cast. theraven 2011-04-19 14:58:44 +0000
  • 789219a2cb Expose the low memory profile as an option in the dtable. theraven 2011-04-19 10:55:59 +0000
  • 4fc7030973 Remove some obsolete FIXMEs. theraven 2011-04-19 10:55:35 +0000
  • 7b49755964 Dtable cleanup cleanups. theraven 2011-04-19 10:55:10 +0000
  • f5f0816777 Make the selector hash depend on the types as well as the name - should reduce hash collisions between typed and untyped versions. theraven 2011-04-19 10:54:00 +0000
  • c6556fd230 Remove FIXME that was fixed in last commit. theraven 2011-04-19 09:57:52 +0000
  • bad36445e3 Improve efficiency of dtable updates from categories. theraven 2011-04-19 09:50:41 +0000
  • 9fd1d26c00 Removed debugging statement that should not have been added in the first place... theraven 2011-04-19 09:29:50 +0000
  • 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.) theraven 2011-04-18 17:30:24 +0000
  • d7056f6de2 Simplify @synchronize() and improve efficiency (space and time). theraven 2011-04-17 18:04:58 +0000
  • 5ea9367f3d Tweak alignment. theraven 2011-04-17 17:31:56 +0000
  • 987ab88a94 Don't do hidden-class transforms for classes, just dangle the look-aside data off the class structure. theraven 2011-04-17 17:31:37 +0000
  • 24de067017 Default to building without the legacy APIs, now GNUstep doesn't require them. theraven 2011-04-15 12:08:49 +0000
  • 32e6715106 Started updating ANNOUNCE for the next release. theraven 2011-04-15 11:47:09 +0000
  • e198597bd3 Added support for associative references. Modified sync code to use this. theraven 2011-04-15 11:20:37 +0000
  • 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. theraven 2011-04-14 16:44:34 +0000