228 Commits (18e8d1bfc132628ab18c53135779ea081c4ce265)
 

Author SHA1 Message Date
theraven 18e8d1bfc1 Add Makefile. This compiles libobjc2 without the need for GNUstep Make (or even GNU make), so should make bootstrapping a bit easier. 16 years ago
theraven 2d1add48e5 Updated libobjc2 README. 16 years ago
ericwa c604289023 libobjc2: define SEL as const for GCC 16 years ago
theraven b1aa77e450 Commit some missing files. 16 years ago
ericwa 8f857ae5d3 libobjc2: Change sel_getUid to just call sel_registerName (compatible with OS X 10.0 onwards) 16 years ago
theraven eb48fda62b Expose a function needed by GNUstep. 16 years ago
theraven e2d848467c Another try... 16 years ago
theraven 00004fe5f3 More tweaks to the GNU-compatibility encoding stuff. This API is too broken to use, but GNUstep seems to want it. 16 years ago
theraven 0177ef56e1 Tweak the type encoding stuff a bit. 16 years ago
theraven 5885fd196a Add defines for ObjC types (GNUstep apparently uses them, even though they are not part of the language spec, but the things that they define are, so they only serve to obfuscate code where they are used). 16 years ago
theraven 569a48650d Various tidies. 16 years ago
theraven 718c9398e5 Include the correct headers in hooks.c. 16 years ago
theraven bd58a33b84 Prevent accidental mixing of GNU runtime headers with GNUstep runtime.h. 16 years ago
theraven 108247eb5d Fix dead store (the only bug found by the clang static analyser). 16 years ago
theraven f43e7f6845 Fix typo. 16 years ago
theraven ab59ce1d33 Add feature test APIs to libobjc2. 16 years ago
rfm cd1d274928 Remove usage of -march=native since it doesn't work with most compilers, and
also causes problems with builds on server farms where the build machine is
not the machine the code will run on.
16 years ago
theraven 7453547c47 Add protocol_getMethodDescription(). 16 years ago
theraven 77d02d075b Add some missing protocol introspection functions. 16 years ago
ericwa 52bdf1484f libobjc2: add dummy objc.h and objc-api.h headers which simply include runtime.h 16 years ago
ericwa 7a2c302c5f libobjc2: tweaks to build on Windows 16 years ago
theraven fe566cbc2f Fix introspection with type-dependent dispatch enabled. Looking up a method with an untyped selector was failing because the UID for the selector was no longer the same for all type variants.
As a side-effect of this change, method lookups for introspection are now much faster.  They use the slot lookup mechanism to find which class has the method declared and then only need to do the linear search on that class, rather than doing the linear search on the entire hierarchy (slow!).  If the method is not present, then they can give up after two memory accesses, rather than after searching a few hundred list entries, but that's a less important case.

I also noticed while tracking down this bug that the implementation of methodSignatureForSelector in GNUstep is very inefficient.  I'll tweak that next.
16 years ago
theraven 0284155f2d Added a hook that defines the behaviour when you call a method with the wrong signature. 16 years ago
theraven 06015757a7 Type dependent dispatch now actually works. 16 years ago
theraven 42a545fc7c In some irritating circumstances, the load order can cause a +load message to trigger other code, which sends messages with selectors that have not been mapped yet.
The runtime was handling the message lookup correctly in this case, but only as a side-effect of the fallback code from when type-dependent dispatch is not possible.  This resulted in a confusing warning message, telling you that you were calling a method with an incorrect signature, when the two signatures that it printed were the same.

This case is now handled correctly, so the warning disappears (unless you really are calling a method with the wrong signature and have TDD enabled).
16 years ago
theraven e9b129d878 Added low memory profile to libobjc2. This uses a more NeXT-style dtable design, which gives better memory usage at the cost of (significantly) worse worst-case performance. The memory savings seem to be only about 10% in the apps I've tested (Gorm, edlc), so it's probably not worthwhile, but it might be useful for someone finding stuff is just starting to swap... 16 years ago
theraven 943ed5e714 Some source tidies. 16 years ago
theraven 9986294a51 Fix setting the superclass for metaclasses correctly. 16 years ago
theraven 2cc96a6f7e Fix message forwarding by, for example, actually calling the public forwarding hook, instead of one that isn't exposed to GNUstep... 16 years ago
theraven a75064866a More tweaks to +load. Now defers +load a little bit more. 16 years ago
theraven 378c7d3a6c Crash in the caller, instead of in the message lookup, when the method does not exist and there is no forwarding hook. 16 years ago
theraven ac6f5835e0 Remember to run +load methods in categories, as well as classes. 16 years ago
theraven 65ec110a61 Make sure both protocol classes are available before resolving protocols. 16 years ago
theraven 7ac0904a1f Don't leak memory when throwing exceptions. 16 years ago
theraven 7d0d599241 Fix handling of cleanups while unwinding for exception throwing. 16 years ago
theraven fb474dd7f9 Removed hooks from runtime.h that are in hooks.h 16 years ago
theraven d3122bcfa4 Make sure BOOLs in class tests are always YES or NO.
Make self in +load the correct value (the class, not the metaclass).
16 years ago
theraven f4e7a7bf5c Return the correct thing to exception handlers. 16 years ago
theraven f375d20d7a Add support for catching C++ (and Java / Ada) exceptions in Objective-C. 16 years ago
theraven 121e14a3b8 Small cleanup of dtable code. 16 years ago
theraven 666c84c129 Test the correct class when resolving superclasses. 16 years ago
thebeing 11b7b2b23c Fix compilation issues. 16 years ago
theraven 9271591544 Remove GCC file that is no longer used. 16 years ago
theraven eb84a02e97 Reinstate legacy_malloc in the build, unless you disable legacy nonsense. 16 years ago
theraven b8543a1e13 Removed files that should have gone in the last commit. 16 years ago
theraven 07758fe521 Removed last bits of legacy code from libobjc2. Added new exception handling implementation. 16 years ago
theraven 0e374db1db Added support for type-dependent dispatch to libobjc2. 16 years ago
qmathe 79899f8a46 Fixed unresolved class list loss when the root class gets resolved.
Hence not all classes were previously resolved at load time.

Was breaking +forwardInvocation: because unresolved classes such as 
GSFFInvocation were not receiving +load right when gnustep-base was loaded.
16 years ago
thebeing e36200bb8b Fix division by zero bug triggered by pointers to opaque structs. 16 years ago
theraven f54132293b Remove debugging line from encoding2.c 16 years ago