theraven
|
0dcb0885bf
|
Update opts to work with LLVM trunk (3.3).
|
13 years ago |
theraven
|
8cf5e0412f
|
Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier).
|
14 years ago |
theraven
|
f2caea7f28
|
It turns out that allocating one word on stack every loop iteration doesn't scale very well.
It also turns out that if you test the cache every loop iteration but never write to it that this doesn't really make things any faster...
|
14 years ago |
theraven
|
d99a8b19ed
|
Remove debugging statements.
|
14 years ago |
theraven
|
286892936d
|
Teach the optimisations to work in the presence of exception handling and if the front end emits objc_msgSend() instead of indirect lookups.
The GNUstep-base test suite now passes when compiled with:
-fno-objc-legacy-dispatch -Xclang -load -Xclang /path/to/libGNUObjCRuntime.so -O3
|
14 years ago |
theraven
|
705135bb89
|
Some fixes to the Objective-C optimisation passes. Tested by compiling GNUstep base with clang at -O3 + all of the optimisations that this library enables at O3 and then running the test suite - results, looking good. Still to do before the release: turn objc_msgSend() into objc_msg_lookup_sender() and insert caching when not optimising for size.
|
14 years ago |
theraven
|
b68a5dda6d
|
Get the libobjc2 optimisations building again with LLVM trunk.
|
15 years ago |
theraven
|
b7986e9efa
|
Ooops. Accidentally left the bit that actually did the optimisation commented out.
|
15 years ago |
theraven
|
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).
|
15 years ago |
theraven
|
34aa9f9455
|
Allowed LLVM optimisations to build against both LLVM 2.9 and LLVM 3.0.
|
15 years ago |
theraven
|
9d5452b147
|
Fixed LLVM passes to compile with recent LLVM.
Made class caching pass cache classes in a static variable if the original class is not available.
|
15 years ago |
theraven
|
23447feca5
|
Profile-driven inlining of Objective-C methods.
|
16 years ago |
theraven
|
6a58d3d49d
|
Added unfinished inliner that uses type feedback info to inline instance methods.
Made class method inliner also inline message sends to super.
Various updates caused by clang now attaching more sensible metadata to the IR.
|
16 years ago |
theraven
|
6cac2816cc
|
Added speculative inlining of class messages. Currently inlines all that it can, without deciding whether it's sensible.
|
16 years ago |
theraven
|
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.
In combination, these make class messages marginally slower than function calls, rather than significantly slower than message sends.
|
16 years ago |
theraven
|
352dfe2d93
|
Removed some unneeded #includes.
|
16 years ago |
theraven
|
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).
|
16 years ago |
theraven
|
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).
|
16 years ago |