You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
theraven 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.
The aim of this pass is to identify message send sites which can benefit from speculative inlining and inline caching.  By itself, this pass is useless.  It will later be combined with one that parses this information and then uses the existing caching and inlining infrastructure to optimize hot message send sites.

Now, however, it's time for me to go and dance, so the useful bit will have to wait.
16 years ago
..
COPYING Added LLVM optimisation passes for libobjc2. 16 years ago
ClassIMPCache.cpp Added speculative inlining of class messages. Currently inlines all that it can, without deciding whether it's sensible. 16 years ago
ClassLookupCache.cpp Removed debugging code that shouldn't have been in last commit. 16 years ago
ClassMethodInliner.cpp Added speculative inlining of class messages. Currently inlines all that it can, without deciding whether it's sensible. 16 years ago
IMPCacher.cpp Added speculative inlining of class messages. Currently inlines all that it can, without deciding whether it's sensible. 16 years ago
IMPCacher.h Added speculative inlining of class messages. Currently inlines all that it can, without deciding whether it's sensible. 16 years ago
IvarPass.cpp Added LoopIMPCachePass. This pass automatically performs IMP caching on all loops. 16 years ago
LoopIMPCachePass.cpp Removed some unneeded #includes. 16 years ago
Makefile Added LLVM optimisation passes for libobjc2. 16 years ago
README Added LLVM optimisation passes for libobjc2. 16 years ago
TypeFeedback.cpp 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. 16 years ago

README

GNUstep Runtime Optimisations
=============================

This directory contains LLVM optimisations specific to libobjc2.  To build
them, you must copy this directory to llvm/lib/Transforms/GNURuntime (where
llvm is the root of your llvm checkout).

Running GNU make will then create GNUObjCRuntime.so.  This library can be
passed to opt to run optimisations on bitcode generated with clang or
LanguageKit.

Non-Fragile Ivar Pass
---------------------

Running `opt -gnu-nonfragile-ivar` will invoke the non-fragile instance
variable lowering pass.  This will turn non-fragile instance variable accesses,
which go via one or two indirection layers, into more fragile ones.  If a class
and all of its superclasses are present in the module then this pass will turn
indirect instance variable accesses into hard-coded ones.

For this pass to be most useful, it should be run as a link-time optimisation.

Type Feedback
-------------

Running `opt -gnu-objc-type-feedback` enables type feedback.  Objective-C
message lookups will be replaced by calls to the profiling version in the
runtime library.  The generated data can then be used for future optimisations
(speculative inlining, polymorphic inline caching, and so on), which have not
yet been written.