}
}
- // Get the selector string
- std::string SelStr = E->getSelector().getName();
- llvm::Constant *Selector = CGF.CGM.GetAddrOfConstantString(SelStr);
-
- llvm::Value *SelPtr = Builder.CreateStructGEP(Selector, 0);
return Runtime->GenerateMessageSend(Builder, ConvertType(E->getType()),
CGF.LoadObjCSelf(),
- Receiver, SelPtr,
+ Receiver, E->getSelector(),
&Args[0], Args.size());
}
}
}
- // Get the selector string
- std::string SelStr = E->getSelector().getName();
- llvm::Constant *Selector = CGM.GetAddrOfConstantString(SelStr);
-
- llvm::Value *SelPtr = Builder.CreateStructGEP(Selector, 0);
if (isSuperMessage) {
- const ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(CurFuncDecl);
- assert(OMD && "super is only valid in an Objective-C method");
+ // super is only valid in an Objective-C method
+ const ObjCMethodDecl *OMD = cast<ObjCMethodDecl>(CurFuncDecl);
const char *SuperClass =
OMD->getClassInterface()->getSuperClass()->getName();
return Runtime->GenerateMessageSendSuper(Builder, ConvertType(E->getType()),
}
return Runtime->GenerateMessageSend(Builder, ConvertType(E->getType()),
LoadObjCSelf(),
- Receiver, SelPtr,
+ Receiver, E->getSelector(),
&Args[0], Args.size());
}
const llvm::Type *ReturnTy,
llvm::Value *Sender,
llvm::Value *Receiver,
- llvm::Value *Selector,
+ Selector Sel,
llvm::Value** ArgV,
unsigned ArgC);
virtual llvm::Value *GenerateMessageSendSuper(llvm::IRBuilder &Builder,
Selector Sel,
llvm::Value** ArgV,
unsigned ArgC);
- virtual llvm::Value *LookupClass(llvm::IRBuilder &Builder, llvm::Value
- *ClassName);
+ 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,
const llvm::Type *ReturnTy,
llvm::Value *Sender,
llvm::Value *Receiver,
- llvm::Value *Selector,
+ Selector Sel,
llvm::Value** ArgV,
unsigned ArgC) {
- llvm::Value *cmd = GetSelector(Builder, Selector, 0);
+ llvm::Value *cmd = GetSelector(Builder, Sel);
// Look up the method implementation.
std::vector<const llvm::Type*> impArgTypes;
const llvm::Type *ReturnTy,
llvm::Value *Sender,
llvm::Value *Receiver,
- llvm::Value *Selector,
+ Selector Sel,
llvm::Value** ArgV,
unsigned ArgC) =0;
/// Generate the function required to register all Objective-C components in