]> granicus.if.org Git - clang/commit
Use the extra info in global method pool to speed up looking for ObjC overridden...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 17 Apr 2013 00:09:08 +0000 (00:09 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 17 Apr 2013 00:09:08 +0000 (00:09 +0000)
commite7a77727804c12750cb39e8732e26f2a26e4ce0f
tree0495705ef5f494d3dd5e65439c3c89bd13b5f84f
parent685d10462b875f8c056d27488c0a1b4e13ef680f
Use the extra info in global method pool to speed up looking for ObjC overridden methods.

When we are in a implementation, we check the global method pool whether there were category
methods with the same selector. If there were none (common case) we don't need to do lookups for
overridden methods again.

Note that for an interface method (if we don't encounter its implementation), it is considered that
it overrides methods that were declared before it, not for category methods introduced after it.

This is tradeoff in favor of performance, since it is expensive to do lookups in case there was a
category, and moving the global method pool to ASTContext (so we can check it) would increase complexity.

rdar://13508196

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179654 91177308-0d34-0410-b5e6-96231b3b80d8
lib/AST/DeclObjC.cpp
lib/Sema/SemaDeclObjC.cpp
test/SemaObjC/arc-repeated-weak.mm