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


C++ HandleFunction::compartment方法代码示例

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


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

示例1: currentCallee

bool
FrameIter::matchCallee(JSContext *cx, HandleFunction fun) const
{
    RootedFunction currentCallee(cx, calleeTemplate());

    // As we do not know if the calleeTemplate is the real function, or the
    // template from which it would be cloned, we compare properties which are
    // stable across the cloning of JSFunctions.
    if (((currentCallee->flags() ^ fun->flags()) & JSFunction::STABLE_ACROSS_CLONES) != 0 ||
        currentCallee->nargs() != fun->nargs())
    {
        return false;
    }

    // Only some lambdas are optimized in a way which cannot be recovered without
    // invalidating the frame. Thus, if one of the function is not a lambda we can just
    // compare it against the calleeTemplate.
    if (!fun->isLambda() || !currentCallee->isLambda())
        return currentCallee == fun;

    // Use the same condition as |js::CloneFunctionObject|, to know if we should
    // expect both functions to have the same JSScript. If so, and if they are
    // different, then they cannot be equal.
    bool useSameScript = CloneFunctionObjectUseSameScript(fun->compartment(), currentCallee);
    if (useSameScript &&
        (currentCallee->hasScript() != fun->hasScript() ||
         currentCallee->nonLazyScript() != fun->nonLazyScript()))
    {
        return false;
    }

    // If none of the previous filters worked, then take the risk of
    // invalidating the frame to identify the JSFunction.
    return callee(cx) == fun;
}
开发者ID:yati-sagade,项目名称:PerlitoMonkey,代码行数:35,代码来源:Stack.cpp


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