clang
3.7.0
|
Implements runtime-specific code generation functions. More...
#include <CGObjCRuntime.h>
Classes | |
struct | MessageSendInfo |
Protected Member Functions | |
CGObjCRuntime (CodeGen::CodeGenModule &CGM) | |
uint64_t | ComputeIvarBaseOffset (CodeGen::CodeGenModule &CGM, const ObjCInterfaceDecl *OID, const ObjCIvarDecl *Ivar) |
uint64_t | ComputeIvarBaseOffset (CodeGen::CodeGenModule &CGM, const ObjCImplementationDecl *OID, const ObjCIvarDecl *Ivar) |
LValue | EmitValueForIvarAtOffset (CodeGen::CodeGenFunction &CGF, const ObjCInterfaceDecl *OID, llvm::Value *BaseValue, const ObjCIvarDecl *Ivar, unsigned CVRQualifiers, llvm::Value *Offset) |
void | EmitTryCatchStmt (CodeGenFunction &CGF, const ObjCAtTryStmt &S, llvm::Constant *beginCatchFn, llvm::Constant *endCatchFn, llvm::Constant *exceptionRethrowFn) |
void | EmitAtSynchronizedStmt (CodeGenFunction &CGF, const ObjCAtSynchronizedStmt &S, llvm::Function *syncEnterFn, llvm::Function *syncExitFn) |
Protected Attributes | |
CodeGen::CodeGenModule & | CGM |
Implements runtime-specific code generation functions.
Definition at line 63 of file CGObjCRuntime.h.
|
inlineprotected |
Definition at line 66 of file CGObjCRuntime.h.
|
virtual |
Definition at line 3086 of file CGObjC.cpp.
|
pure virtual |
|
pure virtual |
Referenced by buildBlockDescriptor().
|
pure virtual |
Referenced by buildBlockDescriptor().
unsigned CGObjCRuntime::ComputeBitfieldBitOffset | ( | CodeGen::CodeGenModule & | CGM, |
const ObjCInterfaceDecl * | ID, | ||
const ObjCIvarDecl * | Ivar | ||
) |
Definition at line 79 of file CGObjCRuntime.cpp.
References clang::ObjCInterfaceDecl::getImplementation(), and LookupFieldBitOffset().
|
protected |
Compute an offset to the given ivar, suitable for passing to EmitValueForIvarAtOffset. Note that the correct handling of bit-fields is carefully coordinated by these two, use caution!
The latter overload is suitable for computing the offset of a sythesized ivar.
Definition at line 65 of file CGObjCRuntime.cpp.
References clang::ASTContext::getCharWidth(), clang::CodeGen::CodeGenModule::getContext(), and LookupFieldBitOffset().
|
protected |
Definition at line 72 of file CGObjCRuntime.cpp.
References clang::ASTContext::getCharWidth(), clang::ObjCImplDecl::getClassInterface(), clang::CodeGen::CodeGenModule::getContext(), and LookupFieldBitOffset().
|
protected |
Emits an @synchronize() statement, using the syncEnterFn
and syncExitFn
arguments as the functions called to lock and unlock the object. This function can be called by subclasses that use zero-cost exception handling.
Definition at line 312 of file CGObjCRuntime.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitARCRetainScalarExpr(), clang::CodeGen::CodeGenFunction::EmitObjCConsumeObject(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::CodeGen::CodeGenFunction::EmitStmt(), clang::CodeGen::CodeGenFunction::getLangOpts(), clang::ObjCAtSynchronizedStmt::getSynchBody(), clang::ObjCAtSynchronizedStmt::getSynchExpr(), clang::Expr::getType(), clang::CodeGen::NormalAndEHCleanup, and clang::CodeGen::CodeGenTypeCache::VoidPtrTy.
|
pure virtual |
Referenced by clang::CodeGen::CodeGenFunction::EmitAggregateCopy().
|
pure virtual |
|
inlinevirtual |
Definition at line 225 of file CGObjCRuntime.h.
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPush().
|
pure virtual |
Referenced by EmitDeclInit().
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
Referenced by EmitDeclInit().
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
protected |
Emits a try / catch statement. This function is intended to be called by subclasses, and provides a generic mechanism for generating these, which should be usable by all runtimes. The caller must provide the functions to call when entering and exiting a @catch() block, and the function used to rethrow exceptions. If the begin and end catch functions are NULL, then the function assumes that the EH personality function provides the thrown object directly.
Definition at line 173 of file CGObjCRuntime.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CodeGenFunction::createBasicBlock(), clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitARCInitWeak(), clang::CodeGen::CodeGenFunction::EmitARCRetainNonBlock(), clang::CodeGen::CodeGenFunction::EmitAutoVarDecl(), clang::CodeGen::CodeGenFunction::EmitBlock(), clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup(), clang::CodeGen::CodeGenFunction::EmitStmt(), clang::CodeGen::CodeGenFunction::FinallyInfo::enter(), clang::CodeGen::CodeGenFunction::FinallyInfo::exit(), clang::CodeGen::CodeGenFunction::GetAddrOfLocalVar(), clang::CodeGen::CodeGenFunction::JumpDest::getBlock(), clang::ObjCAtCatchStmt::getCatchBody(), clang::ObjCAtCatchStmt::getCatchParamDecl(), clang::ObjCAtTryStmt::getCatchStmt(), GetEHType(), clang::CodeGen::CodeGenFunction::getExceptionFromSlot(), clang::ObjCAtTryStmt::getFinallyStmt(), clang::CodeGen::CodeGenFunction::getJumpDestInCurrentScope(), clang::ObjCAtTryStmt::getNumCatchStmts(), clang::ObjCAtTryStmt::getTryBody(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenFunction::JumpDest::isValid(), clang::CodeGen::NormalAndEHCleanup, clang::CodeGen::CodeGenFunction::ObjCEHValueStack, clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, clang::CodeGen::CodeGenFunction::popCatchScope(), clang::CodeGen::EHScopeStack::pushCatch(), and clang::CodeGen::EHCatchScope::setHandler().
|
pure virtual |
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCAtTryStmt().
|
protected |
Definition at line 86 of file CGObjCRuntime.cpp.
References clang::Qualifiers::addCVRQualifiers(), clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenTypes::ConvertTypeForMem(), clang::CharUnits::fromQuantity(), clang::FieldDecl::getBitWidthValue(), clang::TargetInfo::getCharAlign(), clang::ASTContext::getCharWidth(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenFunction::getLLVMContext(), clang::CodeGen::LValue::getQuals(), clang::CodeGen::CodeGenModule::getTarget(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenModule::getTypes(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::FieldDecl::isBitField(), LookupFieldBitOffset(), clang::CodeGen::LValue::MakeBitfield(), clang::CodeGen::CGBitFieldInfo::MakeInfo(), clang::CodeGen::CodeGenFunction::MakeNaturalAlignAddrLValue(), clang::CodeGen::CGBitFieldInfo::StorageSize, clang::ASTContext::toBits(), clang::ASTContext::toCharUnitsFromBits(), and clang::QualType::withCVRQualifiers().
|
pure virtual |
EnumerationMutationFunction - Return the function that's called by the compiler when a mutation is detected during foreach iteration.
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt().
|
pure virtual |
Generate a category. A category contains a list of methods (and accompanying metadata) and a list of protocols.
|
pure virtual |
Generate a class structure for this class.
|
pure virtual |
Generate a constant string object.
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCStringLiteral().
|
pure virtual |
Generate an Objective-C message send operation.
Method | - The method being called, this may be null if synthesizing a property setter or getter. |
Referenced by clang::CodeGen::CodeGenFunction::EmitBlockCopyAndAutorelease(), clang::CodeGen::CodeGenFunction::EmitObjCBoxedExpr(), clang::CodeGen::CodeGenFunction::EmitObjCCollectionLiteral(), clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt(), clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(), clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPop(), and clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPush().
|
pure virtual |
Generate an Objective-C message send operation to the super class initiated in a method for Class and with the given Self object.
Method | - The method being called, this may be null if synthesizing a property setter or getter. |
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr().
|
pure virtual |
Generate a function preamble for a method with the specified types.
Referenced by clang::CodeGen::CodeGenFunction::StartObjCMethod().
|
pure virtual |
Generate the named protocol. Protocols contain method metadata but no implementations.
|
pure virtual |
Emit the code to return the named protocol as an object, as in a @protocol expression.
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCProtocolExpr().
|
pure virtual |
GetClass - Return a reference to the class for the given interface decl.
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCBoxedExpr(), clang::CodeGen::CodeGenFunction::EmitObjCCollectionLiteral(), and clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr().
|
pure virtual |
Referenced by clang::CodeGen::CodeGenModule::GetAddrOfConstantString().
|
pure virtual |
API for atomic copying of qualified aggregates with non-trivial copy assignment (c++) in getter.
Referenced by emitCPPObjectAtomicGetterCall().
|
pure virtual |
API for atomic copying of qualified aggregates with non-trivial copy assignment (c++) in setter.
Referenced by emitCPPObjectAtomicSetterCall().
|
pure virtual |
Get the type constant to catch for the given ObjC pointer type. This is used externally to implement catching ObjC types in C++. Runtimes which don't support this should add the appropriate error to Sema.
Referenced by EmitTryCatchStmt(), and clang::CodeGen::CodeGenFunction::EnterCXXTryStmt().
|
pure virtual |
Referenced by emitStructGetterCall().
CGObjCRuntime::MessageSendInfo CGObjCRuntime::getMessageSendInfo | ( | const ObjCMethodDecl * | method, |
QualType | resultType, | ||
CallArgList & | callArgs | ||
) |
Compute the pointer-to-function type to which a message send should be casted in order to correctly call the given method with the given arguments.
method | - may be null |
resultType | - the result type to use if there's no method |
callArgs | - the actual arguments, including implicit ones |
Definition at line 348 of file CGObjCRuntime.cpp.
References clang::CodeGen::RequiredArgs::All, clang::CodeGen::CodeGenTypes::arrangeFreeFunctionCall(), clang::CodeGen::CodeGenTypes::arrangeObjCMessageSendSignature(), CGM, clang::CodeGen::CGFunctionInfo::getExtInfo(), clang::CodeGen::CodeGenTypes::GetFunctionType(), clang::CodeGen::CGFunctionInfo::getRequiredArgs(), clang::CodeGen::CodeGenModule::getTypes(), and clang::CodeGen::CGFunctionInfo::isVariadic().
|
pure virtual |
Return the runtime function for optimized setting properties.
Referenced by clang::CodeGen::CodeGenFunction::generateObjCSetterBody().
|
pure virtual |
Return the runtime function for getting properties.
Referenced by clang::CodeGen::CodeGenFunction::generateObjCGetterBody().
|
pure virtual |
Return the runtime function for setting properties.
Referenced by clang::CodeGen::CodeGenFunction::generateObjCSetterBody().
|
pure virtual |
Get a selector for the specified name and type values. The return value should have the LLVM type for pointer-to ASTContext::getObjCSelType().
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCSelectorExpr().
|
pure virtual |
Get a typed selector.
|
pure virtual |
Referenced by emitStructSetterCall().
|
pure virtual |
Generate the function required to register all Objective-C components in this compilation unit with the runtime library.
|
pure virtual |
Register an class alias.
|
protected |
Definition at line 65 of file CGObjCRuntime.h.
Referenced by getMessageSendInfo().