15 Commits (a35ece500fc4bc6a7d7b06ff55583576c3beae59)

Author SHA1 Message Date
theraven d770ed9688 Correct version of last fix... 16 years ago
theraven de4b63e41d Fix for root class using non-fragile ABI. 16 years ago
rfm d89b28c40c check for nil superclass before dereferencing 16 years ago
theraven fa488d6cea Fix for non-fragile ivar fixup when classes are loaded in the wrong order. 16 years ago
theraven 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.
The protocols table and the class table will now grow as required.  Protocols are now added to the protocols table as they are created, so you should get something sensible and introspectable back when you look up a protocol by name.
16 years ago
theraven 64bedddcb3 Ugly hack to fixup NXConstantString references to NSConstantString if linked against Foundation. Now, if you forget to specify -fconstant-string-class=NSConstantString when compiling, stuff will still work and GNUstep won't get confused. 16 years ago
theraven dfa14d5d34 Made Object less magic. For now, because there are some weird people who want to use Objective-C without Foundation, Object is still included. If you compile without defining GNUSTEP (which GNUstep Make does automatically) then you get the old behaviour. If you build with GNUSTEP defined:
+load will not be sent until both NSObject and NSConstantString have been seen.
NSObject will be set as the superclass for all metaclasses, not Object.

This is in line with Cocoa and should make it a bit easier for people porting code who have categories on NSObject and are confused that they don't work as expected.  

Object and NXConstantString are now deprecated.  They're staying here because I use them for producing reduced test cases for the runtime and compiler, but they shouldn't be used.  I will probably remove them from the default build soon.
16 years ago
theraven e1ae8df5af Initial work on protocol uniquing. Protocols are now added to a table and can be looked up at run time. 16 years ago
theraven 9dc0343c21 Fixed ivar offset checking to take account for alignment. 16 years ago
theraven 41f9e12f53 Added a bit more debugging info to the overlapping class error. 16 years ago
theraven 5f48260c6a Made sure the ObjC mutex is created before it might first be used. 16 years ago
theraven cbf41a1fec Fixed build with clang. 16 years ago
theraven bd73cc4e57 Added run-time abort if the first ivar of a newly-loaded class does not immediately follow on from the previous one. This (hopefully, modulo some potential weirdness related to bitfields) means that we should now get programs refusing to start in most cases where they depend on frameworks that had their ABI change but didn't bump the library version. This seems preferable to the previous behaviour of corrupting memory (note that this won't catch the case where the superclass has its ivars rearranged, but remains exactly the same size and the subclass references the ivars). 16 years ago
theraven f8b98a73a2 Bug fixes in libobjc2:
- nil_method now returns 0, not receiver.

- Metaclasses actually get their dtables installed with the new ABI.  For some reason this wasn't being done, so class messages didn't work with the new ABI.  Now they do and (at least some) nontrivial programs work.

- Undid commenting out of the code setting the fast ivar access pointers.  I can't remember why this was commented out, but it seems not to break anything.  I have an LLVM pass that makes compiled code access these pointers, but it's not committed yet.
16 years ago
theraven 323e3dfaeb Added new runtime library, based on GCC 4.4 libobjc, libobjc_tr and Objective2.framework. 17 years ago