bool JSDOMApplicationCacheOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSDOMApplicationCache* jsDOMApplicationCache = static_cast<JSDOMApplicationCache*>(handle.get().asCell());
    if (!isObservable(jsDOMApplicationCache))
        return false;
    Frame* root = jsDOMApplicationCache->impl()->frame();
    if (!root)
        return false;
    return visitor.containsOpaqueRoot(root);
}
Beispiel #2
0
bool JSTestInterfaceOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSTestInterface* jsTestInterface = static_cast<JSTestInterface*>(handle.get().asCell());
    if (jsTestInterface->impl()->hasPendingActivity())
        return true;
    if (!isObservable(jsTestInterface))
        return false;
    UNUSED_PARAM(visitor);
    return false;
}
Beispiel #3
0
bool JSStyleSheetListOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSStyleSheetList* jsStyleSheetList = static_cast<JSStyleSheetList*>(handle.get().asCell());
    if (!isObservable(jsStyleSheetList))
        return false;
    Document* root = jsStyleSheetList->impl()->document();
    if (!root)
        return false;
    return visitor.containsOpaqueRoot(root);
}
Beispiel #4
0
bool JSStyleMediaOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSStyleMedia* jsStyleMedia = static_cast<JSStyleMedia*>(handle.get().asCell());
    if (!isObservable(jsStyleMedia))
        return false;
    Frame* root = jsStyleMedia->impl()->frame();
    if (!root)
        return false;
    return visitor.containsOpaqueRoot(root);
}
Beispiel #5
0
bool JSNamedNodeMapOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSNamedNodeMap* jsNamedNodeMap = static_cast<JSNamedNodeMap*>(handle.get().asCell());
    if (!isObservable(jsNamedNodeMap))
        return false;
    Element* element = jsNamedNodeMap->impl()->element();
    if (!element)
        return false;
    void* root = WebCore::root(element);
    return visitor.containsOpaqueRoot(root);
}
bool UniformValidBeliefSampler::sampleNear(State *state, const State *near, const double distance)
{
    unsigned int attempts = 0;
    bool valid = false;
    do
    {
        sampler_->sampleUniformNear(state, near, distance);
        valid = si_->isValid(state) && isObservable(state) ;
        ++attempts;
    } while (!valid && attempts < attempts_);
    return valid;
}
bool UniformValidBeliefSampler::sample(State *state)
{
    unsigned int attempts = 0;
    bool valid = false;
    do
    {
        sampler_->sampleUniform(state);
        valid = si_->isValid(state) && isObservable(state);

        ++attempts;
    } while (!valid && attempts < attempts_);
    return valid;
}
bool GaussianValidBeliefSampler::sampleNear(ompl::base::State *state, const ompl::base::State *near, const double distance)
{
    bool result = false;
    unsigned int attempts = 0;
    ompl::base::State *temp = si_->allocState();
    do
    {
        sampler_->sampleUniformNear(state, near, distance);
        bool v1 = si_->isValid(state) ;
        sampler_->sampleGaussian(temp, state, distance);
        bool v2 = si_->isValid(temp) ;
        if (v1 != v2)
        {
            if (v2 && isObservable(temp)) // state must be observable to be a valid FIRM node
                si_->copyState(state, temp);
            result = true;
        }
        ++attempts;
    } while (!result && attempts < attempts_);
    si_->freeState(temp);
    return result;
}
bool GaussianValidBeliefSampler::sample(ompl::base::State *state)
{
    bool result = false;
    unsigned int attempts = 0;
    ompl::base::State *temp = si_->allocState();
    do
    {
        sampler_->sampleUniform(state);
        bool v1 = si_->isValid(state) ;
        sampler_->sampleGaussian(temp, state, stddev_);
        bool v2 = si_->isValid(temp) ;
        if (v1 != v2)
        {
            if (v2 && isObservable(temp)) // observability check must also be performed
                si_->copyState(state, temp);
            result = true;
        }
        ++attempts;
    } while (!result && attempts < attempts_);
    si_->freeState(temp);

    return result;
}