From: Fariborz Jahanian Date: Thu, 25 Oct 2012 18:06:53 +0000 (+0000) Subject: Provide comment describing what buildBlockDescriptor does. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af879c0222791b5e026653a834df1c5c1fb41552;p=clang Provide comment describing what buildBlockDescriptor does. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166703 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGBlocks.cpp b/lib/CodeGen/CGBlocks.cpp index 7915c37175..3e126f8505 100644 --- a/lib/CodeGen/CGBlocks.cpp +++ b/lib/CodeGen/CGBlocks.cpp @@ -56,7 +56,18 @@ static llvm::Constant *buildDisposeHelper(CodeGenModule &CGM, return CodeGenFunction(CGM).GenerateDestroyHelperFunction(blockInfo); } -/// Build the block descriptor constant for a block. +/// buildBlockDescriptor - Build the block descriptor meta-data for a block. +/// buildBlockDescriptor is accessed from 5th field of the Block_literal +/// meta-data and contains stationary information about the block literal. +/// Its definition will have 4 (or optinally 6) words. +/// struct Block_descriptor { +/// unsigned long reserved; +/// unsigned long size; // size of Block_literal metadata in bytes. +/// void *copy_func_helper_decl; // optional copy helper. +/// void *destroy_func_decl; // optioanl destructor helper. +/// void *block_method_encoding_address;//@encode for block literal signature. +/// void *block_layout_info; // encoding of captured block variables. +/// }; static llvm::Constant *buildBlockDescriptor(CodeGenModule &CGM, const CGBlockInfo &blockInfo) { ASTContext &C = CGM.getContext();