diff options
author | Greg Clayton <gclayton@apple.com> | 2013-02-13 22:56:14 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2013-02-13 22:56:14 +0000 |
commit | a66c4d96f02a07f2956a3f029e216a8967463f5d (patch) | |
tree | dfab354f735b493e2148d9f0b9e3d6990a174fea /clang/lib/CodeGen/ModuleBuilder.cpp | |
parent | 3c8220405d2dfc93da1c0c69942d07b0bd12927a (diff) | |
download | llvm-a66c4d96f02a07f2956a3f029e216a8967463f5d.zip llvm-a66c4d96f02a07f2956a3f029e216a8967463f5d.tar.gz llvm-a66c4d96f02a07f2956a3f029e216a8967463f5d.tar.bz2 |
<rdar://problem/13210494>
Parse objective C information as efficiently as possible and without taking dangerous runtime locks.
Reworked the way objective C information is parsed by:
1 - don't read all class names up front, this is about 500K of data with names
2 - add a 32 bit hash map that maps a hash of a name to the Class pointer (isa)
3 - Improved name lookups by using the new hash map
4 - split up reading the objc runtime info into dynamic and shared cache since the shared cache only needs to be read once.
5 - When reading all isa values, also get the 32 bit hash instead of the name
6 - Read names lazily now that we don't need all names up front
7 - Allow the hash maps to not be there and still have this function correctly
There is dead code in here with all of the various methods I tried. I want to check this in first to not lose any of it in case we need to revert to any of the extra code. I will promptly cleanup and commit again.
llvm-svn: 175101
Diffstat (limited to 'clang/lib/CodeGen/ModuleBuilder.cpp')
0 files changed, 0 insertions, 0 deletions