当前位置: 首页>>代码示例>>C++>>正文


C++ ManagedStatic::release方法代码示例

本文整理汇总了C++中ManagedStatic::release方法的典型用法代码示例。如果您正苦于以下问题:C++ ManagedStatic::release方法的具体用法?C++ ManagedStatic::release怎么用?C++ ManagedStatic::release使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ManagedStatic的用法示例。


在下文中一共展示了ManagedStatic::release方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: callExternalFunction

GenericValue Interpreter::callExternalFunction(Function *F,
        const std::vector<GenericValue> &ArgVals) {
    TheInterpreter = this;

    FunctionsLock->acquire();

    // Do a lookup to see if the function is in our cache... this should just be a
    // deferred annotation!
    std::map<const Function *, ExFunc>::iterator FI = ExportedFunctions->find(F);
    if (ExFunc Fn = (FI == ExportedFunctions->end()) ? lookupFunction(F)
                    : FI->second) {
        FunctionsLock->release();
        return Fn(F->getFunctionType(), ArgVals);
    }

#ifdef USE_LIBFFI
    std::map<const Function *, RawFunc>::iterator RF = RawFunctions->find(F);
    RawFunc RawFn;
    if (RF == RawFunctions->end()) {
        RawFn = (RawFunc)(intptr_t)
                sys::DynamicLibrary::SearchForAddressOfSymbol(F->getName());
        if (!RawFn)
            RawFn = (RawFunc)(intptr_t)getPointerToGlobalIfAvailable(F);
        if (RawFn != 0)
            RawFunctions->insert(std::make_pair(F, RawFn));  // Cache for later
    } else {
        RawFn = RF->second;
    }

    FunctionsLock->release();

    GenericValue Result;
    if (RawFn != 0 && ffiInvoke(RawFn, F, ArgVals, getTargetData(), Result))
        return Result;
#endif // USE_LIBFFI

    if (F->getName() == "__main")
        errs() << "Tried to execute an unknown external function: "
               << *F->getType() << " __main\n";
    else
        report_fatal_error("Tried to execute an unknown external function: " +
                           F->getName());
#ifndef USE_LIBFFI
    errs() << "Recompiling LLVM with --enable-libffi might help.\n";
#endif
    return GenericValue();
}
开发者ID:,项目名称:,代码行数:47,代码来源:


注:本文中的ManagedStatic::release方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。