]> granicus.if.org Git - clang/commit
Yesterday I discovered that 78% of all selectors in "Cocoa.h" take 0/1 argument.
authorSteve Naroff <snaroff@apple.com>
Fri, 28 Sep 2007 22:22:11 +0000 (22:22 +0000)
committerSteve Naroff <snaroff@apple.com>
Fri, 28 Sep 2007 22:22:11 +0000 (22:22 +0000)
commitbcfb06ac6da1aa3c74ac1ef7a49c2807522366e7
treeb9d83a8065bb20e59578fbc4ce86f0a3a46fe369
parentd9363c3a80168283b3da518b4e17f545a6246857
Yesterday I discovered that 78% of all selectors in "Cocoa.h" take 0/1 argument.

This motivated implementing a devious clattner inspired solution:-)

This approach uses a small value "Selector" class to point to an IdentifierInfo for the 0/1 case. For multi-keyword selectors, we instantiate a MultiKeywordSelector object (previously known as SelectorInfo). Now, the incremental cost for selectors is only 24,800 for Cocoa.h! This saves 156,592 bytes, or 86%!! The size reduction is also the result of getting rid of the AST slot, which was not strictly necessary (we will associate a selector with it's method using another table...most likely in Sema).

This change was critical to make now, before we have too many clients.

I still need to add some comments to the Selector class...will likely add later today/tomorrow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42452 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
AST/Expr.cpp
Lex/IdentifierTable.cpp
Parse/ParseObjc.cpp
Sema/Sema.h
Sema/SemaDecl.cpp
Sema/SemaExpr.cpp
clang.xcodeproj/project.pbxproj
include/clang/AST/ASTContext.h
include/clang/AST/Decl.h
include/clang/AST/Expr.h
include/clang/Lex/IdentifierTable.h
include/clang/Lex/Preprocessor.h
include/clang/Parse/Action.h
include/clang/Parse/Parser.h