比如说,我有一个 Objective-C 编译的模块,它包含以下内容:
typedef bool (^BoolBlock)(void);
BoolBlock returnABlock(void)
{
return Block_copy(^bool(void){
printf("Block executing.\n");
return YES;
});
}
...然后,使用 LLVM C++ API,我加载该模块并创建一个 CallInst 来调用该returnABlock()
函数:
Function *returnABlockFunction = returnABlockModule->getFunction(std::string("returnABlock"));
CallInst *returnABlockCall = CallInst::Create(returnABlockFunction, "returnABlockCall", entryBlock);
然后如何调用通过returnABlockCall
对象返回的块?