[cfe-commits] r52761 - in /cfe/trunk/lib/CodeGen: CGObjCGNU.cpp CGObjCRuntime.h
Chris Lattner
sabre at nondot.org
Wed Jun 25 21:44:19 PDT 2008
Author: lattner
Date: Wed Jun 25 23:44:19 2008
New Revision: 52761
URL: http://llvm.org/viewvc/llvm-project?rev=52761&view=rev
Log:
remove the old getSelector implementation, which removes some
calls to getStringValue
Modified:
cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
cfe/trunk/lib/CodeGen/CGObjCRuntime.h
Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=52761&r1=52760&r2=52761&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Wed Jun 25 23:44:19 2008
@@ -119,9 +119,6 @@
virtual llvm::Value *LookupClass(llvm::IRBuilder &Builder,
llvm::Value *ClassName);
virtual llvm::Value *GetSelector(llvm::IRBuilder &Builder, Selector Sel);
- virtual llvm::Value *GetSelector(llvm::IRBuilder &Builder,
- llvm::Value *SelName,
- llvm::Value *SelTypes);
virtual llvm::Function *MethodPreamble(
const std::string &ClassName,
@@ -235,64 +232,8 @@
}
-/// Looks up the selector for the specified name / type pair.
-// FIXME: Selectors should be statically cached, not looked up on every call.
-llvm::Value *CGObjCGNU::GetSelector(llvm::IRBuilder &Builder,
- llvm::Value *SelName,
- llvm::Value *SelTypes) {
- // For static selectors, we return an alias for now then store them all in a
- // list that the runtime will initialise later.
- if (llvm::Constant *CName = dyn_cast<llvm::Constant>(SelName)) {
- // Untyped selector
- if (SelTypes == 0) {
- // If it's already cached, return it.
- llvm::GlobalAlias *&US = UntypedSelectors[getStringValue(CName)];
- if (US == 0) {
- // If it isn't, cache it.
- US = new llvm::GlobalAlias(llvm::PointerType::getUnqual(SelectorTy),
- llvm::GlobalValue::InternalLinkage,
- ".objc_untyped_selector_alias",
- NULL, &TheModule);
- }
- return Builder.CreateLoad(US);
- }
- // Typed selectors
- if (llvm::Constant *CTypes = dyn_cast<llvm::Constant>(SelTypes)) {
- TypedSelector Selector = TypedSelector(getStringValue(CName),
- getStringValue(CTypes));
- // If it's already cached, return it.
- llvm::GlobalAlias *&TS = TypedSelectors[Selector];
- if (TS == 0) {
- // If it isn't, cache it.
- TS = new llvm::GlobalAlias(llvm::PointerType::getUnqual(SelectorTy),
- llvm::GlobalValue::InternalLinkage,
- ".objc_typed_selector_alias",
- NULL, &TheModule);
- }
- return Builder.CreateLoad(TS);
- }
- }
- // Dynamically look up selectors from non-constant sources
- llvm::Value *cmd;
- if (SelTypes == 0) {
- llvm::Constant *SelFunction = TheModule.getOrInsertFunction("sel_get_uid",
- SelectorTy,
- PtrToInt8Ty,
- NULL);
- cmd = Builder.CreateCall(SelFunction, SelName);
- }
- else {
- llvm::Constant *SelFunction =
- TheModule.getOrInsertFunction("sel_get_typed_uid",
- SelectorTy, PtrToInt8Ty, PtrToInt8Ty, NULL);
- cmd = Builder.CreateCall2(SelFunction, SelName, SelTypes);
- }
- return cmd;
-}
-
-
-llvm::Constant *CGObjCGNU::MakeConstantString(const std::string &Str, const
- std::string &Name) {
+llvm::Constant *CGObjCGNU::MakeConstantString(const std::string &Str,
+ const std::string &Name) {
llvm::Constant * ConstStr = llvm::ConstantArray::get(Str);
ConstStr = new llvm::GlobalVariable(ConstStr->getType(), true,
llvm::GlobalValue::InternalLinkage,
Modified: cfe/trunk/lib/CodeGen/CGObjCRuntime.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCRuntime.h?rev=52761&r1=52760&r2=52761&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCRuntime.h (original)
+++ cfe/trunk/lib/CodeGen/CGObjCRuntime.h Wed Jun 25 23:44:19 2008
@@ -54,9 +54,6 @@
virtual llvm::Function *ModuleInitFunction() =0;
/// Get a selector for the specified name and type values
virtual llvm::Value *GetSelector(llvm::IRBuilder &Builder, Selector Sel) = 0;
- virtual llvm::Value *GetSelector(llvm::IRBuilder &Builder,
- llvm::Value *SelName,
- llvm::Value *SelTypes) = 0;
/// Generate a constant string object
virtual llvm::Constant *GenerateConstantString(const char *String,
const size_t Length) = 0;
More information about the cfe-commits
mailing list