Commit Graph

  • fdc1f1e916 Removed more unused code. theraven 2010-06-01 20:23:38 +0000
  • 67741f3f68 Removed hash.c - no longer used. theraven 2010-06-01 20:04:32 +0000
  • de71ebb6b1 Rewritten class loading. theraven 2010-06-01 19:41:07 +0000
  • a1329e22de A bit more class table tidying. theraven 2010-06-01 13:15:33 +0000
  • 7f6f798074 Rewrote some of the class table code to be slightly cleaner. theraven 2010-06-01 12:59:57 +0000
  • 3672f04ea3 Default to installing libobjc2 headers theraven 2010-05-26 19:41:03 +0000
  • 55a62b527f Removed unused variable that prevents compilation by being treated as an error qmathe 2010-05-22 14:01:17 +0000
  • 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... theraven 2010-05-21 19:00:02 +0000
  • 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. theraven 2010-05-21 13:49:19 +0000
  • a692cbd4dd Fix some GCC warnings. Patch by TOM. theraven 2010-05-20 11:44:58 +0000
  • a9bdab1f44 Reverted last commit - breaks the build with clang. theraven 2010-05-20 10:56:56 +0000
  • 2efec09e39 Silence some warnings when compiling with GCC. Patch by TOM. theraven 2010-05-20 10:46:02 +0000
  • 7a9b105817 Fixed missing ! in dtable construction code, which meant that class methods were being preferred to category methods. theraven 2010-05-19 14:33:55 +0000
  • 0c8d2bd7b8 Added missing files. theraven 2010-05-19 14:16:26 +0000
  • c40f9e84f2 Return NULL instead of "" from sel_getTypes_np() - matches behaviour of sel_get_types() and makes more sense. theraven 2010-05-19 12:56:46 +0000
  • ded142ebff Add empty sarray.h - for some reason GNUstep is trying to #include this file (no idea why, as nothing in GNUstep actually uses anything from it). Adding an empty version should prevent breakage for now. theraven 2010-05-17 21:40:07 +0000
  • 1a60fabf96 More 64-bit fixes. theraven 2010-05-17 15:22:19 +0000
  • 060ddf89be Another 64-bit fix. theraven 2010-05-17 14:29:55 +0000
  • bfbc15e4f7 Fix 64-bit warning. theraven 2010-05-16 22:36:59 +0000
  • cc41e05598 Revert accidental changes to make file. theraven 2010-05-16 21:33:22 +0000
  • d36b939232 Actually commit the new dtable implementation this time... theraven 2010-05-16 21:32:43 +0000
  • b04cccf46b Fixed some issues in runtime.c when looking up methods. This fixes some issues with DO. theraven 2010-05-16 20:39:54 +0000
  • 4be9799259 Unrolled the SparseArrayLookup loop. This means we only need one jump, instead of 2, which gives the same performance as the old GNU code and about half the memory usage. It's really, really, ugly code though - I need to teach the compiler to do this optimisation so I don't have to. theraven 2010-05-15 13:27:20 +0000
  • 0d78186238 Some bug fixes and tidies. theraven 2010-05-14 21:47:35 +0000
  • 0957cbe425 Factored out dtable stuff into dtable_legacy.c so that it can be replaced and so that we can do some profiling of the replacement to make sure it doesn't introduce performance regressions. theraven 2010-05-14 17:53:35 +0000
  • 0045ce0cbd Install slot.h. theraven 2010-05-14 12:55:07 +0000
  • 96de597b3c Mark string functions unused, in case the header is included in files that only use one of them. theraven 2010-05-14 11:19:04 +0000
  • 7b8b3839df More refactoring. theraven 2010-05-13 23:27:17 +0000
  • 2d84b96a72 Tidied up some bits by creating private headers for private data structures. theraven 2010-05-13 22:29:56 +0000
  • a6b5cd15dc Rename the library with the lib prefix so it can actually be linked sensibly. theraven 2010-05-09 12:28:36 +0000
  • 7656e1f9aa Commented out 'firstslot' unused variable, otherwise Clang reports it as an error. qmathe 2010-05-04 11:22:23 +0000
  • 96f51da81e Commented out some premature termination code. This is a bit of a hack; we're now repeatedly adding the same methods to dtables, which is ugly. We ought instead to be able to test if something is a lazy copy. theraven 2010-05-03 13:35:09 +0000
  • 23447feca5 Profile-driven inlining of Objective-C methods. theraven 2010-05-01 18:24:22 +0000
  • ede942cdd8 Simplified profiling even more. Now should allow inlining of manually-cached IMPs. theraven 2010-05-01 16:53:15 +0000
  • 9ea9a6cf41 Made inlining conditional on inlining actually being sensible. theraven 2010-05-01 15:54:27 +0000
  • 6a58d3d49d Added unfinished inliner that uses type feedback info to inline instance methods. theraven 2010-05-01 13:56:59 +0000
  • 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. theraven 2010-05-01 13:54:47 +0000
  • 168a0d02e1 Revert last commit. Was fixing the wrong thing. theraven 2010-05-01 13:53:51 +0000
  • 3f52e353ee Mark NSBlocks classes as resolved, so we don't crash trying to interpret the class pointers as strings... theraven 2010-05-01 13:53:18 +0000
  • c425b1bfdc Initial (working) type feedback pass. Records the IMP for every message lookup. Note: This writes 3 words for every single message send, which means that it makes code VERY slow and can fill up the filesystem if you leave it enabled. theraven 2010-04-29 17:56:36 +0000
  • 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. theraven 2010-04-29 17:52:10 +0000
  • 6cac2816cc Added speculative inlining of class messages. Currently inlines all that it can, without deciding whether it's sensible. theraven 2010-04-28 21:27:54 +0000
  • beb8356367 Made ClassIMPCache a ModulePass (it shouldn't be a FunctionPass because it adds globals). theraven 2010-04-28 15:21:23 +0000
  • 60f87bc4ad Removed debugging code that shouldn't have been in last commit. theraven 2010-04-28 14:47:02 +0000
  • 84b41a8464 Added -gnu-class-lookup-cache and -gnu-class-imp-cache passes. These add caching for class messages and also skip the class lookup (using the class symbol directly) where possible. theraven 2010-04-28 14:33:52 +0000
  • 352dfe2d93 Removed some unneeded #includes. theraven 2010-04-28 12:24:03 +0000
  • 874ec4bd66 Fixed IMP cacher to not cache the slot if the lookup function changes the receiver (this could result in a method being called on the wrong receiver, which would just be confusing). theraven 2010-04-28 12:20:26 +0000
  • dfc4a0286b Factored out code that performs IMP caching into a separate class. This can now be used by other passes that cache IMPs outside of loops (for example, always caching class messages because they always have the same receiver). theraven 2010-04-28 11:38:31 +0000
  • 1918888ce1 Added LoopIMPCachePass. This pass automatically performs IMP caching on all loops. theraven 2010-04-27 22:34:15 +0000
  • 289d412dac Fixed lookup of superclass when superclass is nil. theraven 2010-04-26 21:34:48 +0000
  • ce5b0e9f83 Added out-of-tree GCKit stuff. Still (very) work-in-progress. theraven 2010-04-26 21:33:59 +0000
  • 7b535dcda4 Revert change ... leave objc_skip_offset() buggy for code which depends on that behavior. It's better just to avoid using it anywhere else. rfm 2010-04-14 11:57:15 +0000
  • c8412c806d Fix objc_skip_offset() to avoid skipping and extra character rfm 2010-04-14 10:36:15 +0000
  • 09ed66f819 Fixed use of uninitialized variable. theraven 2010-03-28 19:09:57 +0000
  • d9ead92cb3 Fixed bug in allocating metaclasses for lock classes. theraven 2010-03-26 16:12:21 +0000
  • 352e721861 Changed ptrdiff_t to int in property accessors. This is for compatibility with some changes in clang that are required to prevent things from breaking on LP64 platforms. theraven 2010-03-23 16:11:57 +0000
  • e85975a36e Don't make NSObject a subclass of NSObject. Thanks to Truls Becken! theraven 2010-03-13 20:30:30 +0000
  • 023184f4b5 Removed unused static function. theraven 2010-03-13 18:48:24 +0000
  • 93251416eb Added LLVM optimisation passes for libobjc2. theraven 2010-03-13 18:43:56 +0000
  • fb26e9a9ef Disable sender-aware dispatch - it breaks some code. theraven 2010-03-13 18:42:02 +0000
  • ff7af18060 Correctly handle getting the name of nil. For some given value of correct, where 'correct' means 'compatible with the Apple behaviour' and not 'actually sensible'. theraven 2010-03-13 13:01:53 +0000
  • a35ece500f Rewrote objc_getClassList() to use class table directly. theraven 2010-03-13 01:45:24 +0000
  • 0abdc2a574 Small cleanups from last commit. theraven 2010-03-12 22:59:36 +0000
  • 8ce32fd1c9 Rewrote class resolving code. Now it only resolves classes that actually need resolving, rather than iterating over the entire class table. theraven 2010-03-12 22:47:10 +0000
  • bfbd52709b Fixed off-by-one error in hash table enumerator, which was causing one class to fail to be resolved. theraven 2010-03-12 18:53:27 +0000
  • 492b2315c1 Rewrote property locking to be faster and not require @synchronized (which breaks if you call it in the object's -dealloc method). theraven 2010-03-11 12:55:31 +0000
  • 71be4a20f3 Made magic object header use #define instead of const (gets rid of unused variable warnings). theraven 2010-03-06 13:46:48 +0000
  • 5eb97d0e38 fix missing line rfm 2010-03-04 10:31:41 +0000
  • 76845ff81c fix wrong commit rfm 2010-03-04 09:21:54 +0000
  • b7963e23a6 backport class data copying fixes from ObjectiveC2 rfm 2010-03-04 08:15:43 +0000
  • bc0ad88a82 complete backport rfm 2010-03-03 10:04:27 +0000
  • e2f4f38e45 backport bugfixes from ObjectiveC2 code rfm 2010-03-03 09:34:45 +0000
  • bf92e25952 match ivar lookup with osx and compatibility library rfm 2010-02-28 17:26:41 +0000
  • 607bc433c9 Fix instance variable lookup to match OSX rfm 2010-02-28 17:23:02 +0000
  • 719b540317 Set resolve / initialize flags for new metaclasses. theraven 2010-02-27 23:12:50 +0000
  • 01559280f3 Fixed LOCK() -> UNLOCK(). theraven 2010-02-27 19:38:24 +0000
  • ae11414b4d Handle case where @synchronized is used with a class. theraven 2010-02-27 18:24:03 +0000
  • 196ce9abb1 Cope with null selector/selecotr name as in OSX rfm 2010-02-26 04:55:07 +0000
  • 301c01b2ae slightly more rigorous dtable handling. rfm 2010-02-25 16:54:59 +0000
  • eee7956bce Cleaner version of the last fix. theraven 2010-02-25 16:34:05 +0000
  • d4fe4f522e Fixed typo in comment in runtime.c. theraven 2010-02-25 16:32:31 +0000
  • d770ed9688 Correct version of last fix... theraven 2010-02-25 13:48:37 +0000
  • de4b63e41d Fix for root class using non-fragile ABI. theraven 2010-02-25 13:31:45 +0000
  • d89b28c40c check for nil superclass before dereferencing rfm 2010-02-25 13:18:02 +0000
  • fa488d6cea Fix for non-fragile ivar fixup when classes are loaded in the wrong order. theraven 2010-02-25 12:59:12 +0000
  • 0e7441570b fixup bad function prototype rfm 2010-02-25 09:23:28 +0000
  • fb97e23e50 fix class_respondsToSelector() rfm 2010-02-24 10:21:25 +0000
  • 5786a73e46 I'm pretty sure that, when resizing a table, we want to copy the non-null nodes rather than the null ones. rfm 2010-02-10 09:36:01 +0000
  • 45b2641793 allow link with toydispatch rfm 2010-02-07 05:45:55 +0000
  • 2350156aba More GCKit work. Most stuff is working now, with the big exception being tracing of collectable regions. Test case demonstrates this failure and the success of everything else. theraven 2010-02-05 14:36:32 +0000
  • 81f0c58a86 Fixed const warning. theraven 2010-02-05 14:11:32 +0000
  • 7c03c0d3f1 Fixed double-free problems in GCKit. Fixed removal from hash tables. Added enumerator helper for when you remove objects from a map while enumerating. Removed tracing statements that were identifying bugs that have now been fixed. theraven 2010-02-03 13:46:32 +0000
  • 8642bf7b8d Fixed statement order in hash_table.h theraven 2010-02-03 02:33:33 +0000
  • 1f1c5b5b1a Added test for strong-cast assign (assign to traced memory allocated with GCAllocateCollectable()). Fixed bugs that it showed. theraven 2010-02-03 02:12:10 +0000
  • 5b1911b4f4 Initial commit of GCKit (moved from Étoilé and the missing 90% mostly implemented). GCKit implements cycle detection on the heap and tracing on the stack and designated heap regions, with support for weak references. It is designed for implementing OS X 10.5-compatible GC semantics. theraven 2010-02-02 23:36:38 +0000
  • ffc041fc82 Added missing file. theraven 2010-02-01 14:48:40 +0000
  • 8058495e39 Fix crash with gcc-compiled protocols. theraven 2010-01-25 23:34:00 +0000
  • c1a637a990 Allowed hash tables to dynamically resize. This uses toydispatch to free the old version of the table after copying all of the data into the new one, after waiting enough time to allow all potential readers to finish. There are theoretical cases when this can fail, but hopefully no practical ones. The theoretical cases can be removed by making the garbage thread run at a lower priority than all of the other threads in the system. theraven 2010-01-25 22:56:54 +0000
  • 98a2cd07d4 Removed debugging line included by accident with last commit. theraven 2010-01-25 22:03:57 +0000
  • 614e20229e Fixed copy and paste error in toydispatch. theraven 2010-01-25 18:41:42 +0000