コード例 #1
0
bool JSWorkerLocationOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSWorkerLocation* jsWorkerLocation = jsCast<JSWorkerLocation*>(handle.get().asCell());
    if (!isObservable(jsWorkerLocation))
        return false;
    WorkerLocation* root = &jsWorkerLocation->impl();
    return visitor.containsOpaqueRoot(root);
}
コード例 #2
0
void JSWebGLRenderingContext::visitChildren(SlotVisitor& visitor)
{
    ASSERT_GC_OBJECT_INHERITS(this, &s_info);
    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
    ASSERT(structure()->typeInfo().overridesVisitChildren());
    Base::visitChildren(visitor);
    visitor.addOpaqueRoot(impl());
}
コード例 #3
0
ファイル: JSEventListener.cpp プロジェクト: eocanha/webkit
void JSEventListener::visitJSFunction(SlotVisitor& visitor)
{
    // If m_wrapper is 0, then m_jsFunction is zombied, and should never be accessed.
    if (!m_wrapper)
        return;

    visitor.appendUnbarrieredWeak(&m_jsFunction);
}
コード例 #4
0
ファイル: Arguments.cpp プロジェクト: 13W/phantomjs
void Arguments::visitChildren(SlotVisitor& visitor)
{
    JSObject::visitChildren(visitor);

    if (d->registerArray)
        visitor.appendValues(d->registerArray.get(), d->numParameters);

    if (d->extraArguments) {
        unsigned numExtraArguments = d->numArguments - d->numParameters;
        visitor.appendValues(d->extraArguments, numExtraArguments);
    }

    visitor.append(&d->callee);

    if (d->activation)
        visitor.append(&d->activation);
}
コード例 #5
0
ファイル: ProxyRevoke.cpp プロジェクト: eocanha/webkit
void ProxyRevoke::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    ProxyRevoke* thisObject = jsCast<ProxyRevoke*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    Base::visitChildren(thisObject, visitor);

    visitor.append(&thisObject->m_proxy);
}
コード例 #6
0
void JSWebAssemblyMemory::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    auto* thisObject = jsCast<JSWebAssemblyMemory*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());

    Base::visitChildren(thisObject, visitor);
    visitor.append(&thisObject->m_bufferWrapper);
}
コード例 #7
0
bool JSMutationObserverOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    for (auto* node : jsCast<JSMutationObserver*>(handle.slot()->asCell())->wrapped().observedNodes()) {
        if (visitor.containsOpaqueRoot(root(node)))
            return true;
    }
    return false;
}
コード例 #8
0
void JSCustomGetterSetterFunction::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    JSCustomGetterSetterFunction* thisObject = jsCast<JSCustomGetterSetterFunction*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    Base::visitChildren(thisObject, visitor);

    visitor.append(thisObject->m_getterSetter);
}
コード例 #9
0
void UnlinkedCodeBlock::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    UnlinkedCodeBlock* thisObject = jsCast<UnlinkedCodeBlock*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    Base::visitChildren(thisObject, visitor);
    for (FunctionExpressionVector::iterator ptr = thisObject->m_functionDecls.begin(), end = thisObject->m_functionDecls.end(); ptr != end; ++ptr)
        visitor.append(ptr);
    for (FunctionExpressionVector::iterator ptr = thisObject->m_functionExprs.begin(), end = thisObject->m_functionExprs.end(); ptr != end; ++ptr)
        visitor.append(ptr);
    visitor.appendValues(thisObject->m_constantRegisters.data(), thisObject->m_constantRegisters.size());
    if (thisObject->m_unlinkedInstructions)
        visitor.reportExtraMemoryVisited(thisObject->m_unlinkedInstructions->sizeInBytes());
    if (thisObject->m_rareData) {
        for (size_t i = 0, end = thisObject->m_rareData->m_regexps.size(); i != end; i++)
            visitor.append(&thisObject->m_rareData->m_regexps[i]);
    }
}
コード例 #10
0
ファイル: FunctionRareData.cpp プロジェクト: caiolima/webkit
void FunctionRareData::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    FunctionRareData* rareData = jsCast<FunctionRareData*>(cell);

    rareData->m_objectAllocationProfile.visitAggregate(visitor);
    rareData->m_internalFunctionAllocationProfile.visitAggregate(visitor);
    visitor.append(rareData->m_boundFunctionStructure);
}
コード例 #11
0
void InternalFunction::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    InternalFunction* thisObject = jsCast<InternalFunction*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    Base::visitChildren(thisObject, visitor);
    
    visitor.append(&thisObject->m_originalName);
}
コード例 #12
0
ファイル: JSMediaList.cpp プロジェクト: 13W/phantomjs
bool JSMediaListOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSMediaList* jsMediaList = static_cast<JSMediaList*>(handle.get().asCell());
    if (!isObservable(jsMediaList))
        return false;
    void* root = WebCore::root(jsMediaList->impl());
    return visitor.containsOpaqueRoot(root);
}
コード例 #13
0
void DesiredWriteBarrier::visitChildren(SlotVisitor& visitor)
{
    switch (m_type) {
    case ConstantType: {
        WriteBarrier<Unknown>& barrier = m_codeBlock->constants()[m_which.index];
        visitor.append(&barrier);
        return;
    }
        
    case InlineCallFrameExecutableType: {
        InlineCallFrame* inlineCallFrame = m_which.inlineCallFrame;
        WriteBarrier<ScriptExecutable>& executable = inlineCallFrame->executable;
        visitor.append(&executable);
        return;
    } }
    RELEASE_ASSERT_NOT_REACHED();
}
コード例 #14
0
bool JSStyleSheetOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSStyleSheet* jsStyleSheet = jsCast<JSStyleSheet*>(handle.get().asCell());
    if (!isObservable(jsStyleSheet))
        return false;
    void* root = WebCore::root(&jsStyleSheet->impl());
    return visitor.containsOpaqueRoot(root);
}
コード例 #15
0
void JSXMLHttpRequest::visitAdditionalChildren(SlotVisitor& visitor)
{
    if (XMLHttpRequestUpload* upload = impl().optionalUpload())
        visitor.addOpaqueRoot(upload);

    if (Document* responseDocument = impl().optionalResponseXML())
        visitor.addOpaqueRoot(responseDocument);

    if (ArrayBuffer* responseArrayBuffer = impl().optionalResponseArrayBuffer())
        visitor.addOpaqueRoot(responseArrayBuffer);

    if (Blob* responseBlob = impl().optionalResponseBlob())
        visitor.addOpaqueRoot(responseBlob);

    if (m_response)
        visitor.append(&m_response);
}
コード例 #16
0
bool JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSTestGenerateIsReachable* jsTestGenerateIsReachable = jsCast<JSTestGenerateIsReachable*>(handle.get().asCell());
    if (!isObservable(jsTestGenerateIsReachable))
        return false;
    TestGenerateIsReachable* root = &jsTestGenerateIsReachable->impl();
    return visitor.containsOpaqueRoot(root);
}
コード例 #17
0
ファイル: UnlinkedCodeBlock.cpp プロジェクト: feel2d/webkit
void UnlinkedProgramCodeBlock::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    UnlinkedProgramCodeBlock* thisObject = jsCast<UnlinkedProgramCodeBlock*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    Base::visitChildren(thisObject, visitor);
    for (size_t i = 0, end = thisObject->m_functionDeclarations.size(); i != end; i++)
        visitor.append(&thisObject->m_functionDeclarations[i].second);
}
コード例 #18
0
bool JSCSSStyleDeclarationOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSCSSStyleDeclaration* jsCSSStyleDeclaration = static_cast<JSCSSStyleDeclaration*>(handle.get().asCell());
    if (!isObservable(jsCSSStyleDeclaration))
        return false;
    void* root = WebCore::root(jsCSSStyleDeclaration->impl());
    return visitor.containsOpaqueRoot(root);
}
コード例 #19
0
ファイル: JSWorkerNavigator.cpp プロジェクト: 13W/phantomjs
bool JSWorkerNavigatorOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSWorkerNavigator* jsWorkerNavigator = static_cast<JSWorkerNavigator*>(handle.get().asCell());
    if (!isObservable(jsWorkerNavigator))
        return false;
    WorkerNavigator* root = jsWorkerNavigator->impl();
    return visitor.containsOpaqueRoot(root);
}
コード例 #20
0
bool JSWebGLLoseContextOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
{
    JSWebGLLoseContext* jsWebGLLoseContext = jsCast<JSWebGLLoseContext*>(handle.get().asCell());
    if (!isObservable(jsWebGLLoseContext))
        return false;
    WebGLRenderingContext* root = jsWebGLLoseContext->impl().context();
    return visitor.containsOpaqueRoot(root);
}
コード例 #21
0
void RegExpPrototype::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    RegExpPrototype* thisObject = jsCast<RegExpPrototype*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    Base::visitChildren(thisObject, visitor);
    
    visitor.append(&thisObject->m_emptyRegExp);
}
コード例 #22
0
ファイル: JSCallee.cpp プロジェクト: feel2d/webkit
void JSCallee::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    JSCallee* thisObject = jsCast<JSCallee*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    Base::visitChildren(thisObject, visitor);

    visitor.append(&thisObject->m_scope);
}
コード例 #23
0
void Structure::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    Structure* thisObject = jsCast<Structure*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info);
    ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());
    JSCell::visitChildren(thisObject, visitor);
    if (thisObject->m_globalObject)
        visitor.append(&thisObject->m_globalObject);
    if (!thisObject->isObject())
        thisObject->m_cachedPrototypeChain.clear();
    else {
        if (thisObject->m_prototype)
            visitor.append(&thisObject->m_prototype);
        if (thisObject->m_cachedPrototypeChain)
            visitor.append(&thisObject->m_cachedPrototypeChain);
    }
    if (thisObject->m_previous)
        visitor.append(&thisObject->m_previous);
    if (thisObject->m_specificValueInPrevious)
        visitor.append(&thisObject->m_specificValueInPrevious);
    if (thisObject->m_enumerationCache)
        visitor.append(&thisObject->m_enumerationCache);
    if (thisObject->m_propertyTable) {
        PropertyTable::iterator end = thisObject->m_propertyTable->end();
        for (PropertyTable::iterator ptr = thisObject->m_propertyTable->begin(); ptr != end; ++ptr) {
            if (ptr->specificValue)
                visitor.append(&ptr->specificValue);
        }
    }
}
コード例 #24
0
void SparseArrayValueMap::visitChildren(JSCell* thisObject, SlotVisitor& visitor)
{
    Base::visitChildren(thisObject, visitor);
    
    SparseArrayValueMap* thisMap = jsCast<SparseArrayValueMap*>(thisObject);
    iterator end = thisMap->m_map.end();
    for (iterator it = thisMap->m_map.begin(); it != end; ++it)
        visitor.append(&it->value);
}
コード例 #25
0
void IntlNumberFormat::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    IntlNumberFormat* thisObject = jsCast<IntlNumberFormat*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());

    Base::visitChildren(thisObject, visitor);

    visitor.append(thisObject->m_boundFormat);
}
コード例 #26
0
void JSStyleSheet::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    JSStyleSheet* thisObject = jsCast<JSStyleSheet*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
    ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());
    Base::visitChildren(thisObject, visitor);
    visitor.addOpaqueRoot(root(&thisObject->impl()));
}
コード例 #27
0
void IntlDateTimeFormatConstructor::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    IntlDateTimeFormatConstructor* thisObject = jsCast<IntlDateTimeFormatConstructor*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());

    Base::visitChildren(thisObject, visitor);

    visitor.append(&thisObject->m_dateTimeFormatStructure);
}
コード例 #28
0
ファイル: ProgramExecutable.cpp プロジェクト: caiolima/webkit
void ProgramExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    ProgramExecutable* thisObject = jsCast<ProgramExecutable*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    ScriptExecutable::visitChildren(thisObject, visitor);
    visitor.append(thisObject->m_unlinkedProgramCodeBlock);
    if (ProgramCodeBlock* programCodeBlock = thisObject->m_programCodeBlock.get())
        programCodeBlock->visitWeakly(visitor);
}
コード例 #29
0
ファイル: Executable.cpp プロジェクト: buchongyu/webkit
void EvalExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    EvalExecutable* thisObject = jsCast<EvalExecutable*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    ScriptExecutable::visitChildren(thisObject, visitor);
    if (thisObject->m_evalCodeBlock)
        thisObject->m_evalCodeBlock->visitAggregate(visitor);
    visitor.append(&thisObject->m_unlinkedEvalCodeBlock);
}
コード例 #30
0
ファイル: UnlinkedCodeBlock.cpp プロジェクト: MYSHLIFE/webkit
void UnlinkedCodeBlock::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
    UnlinkedCodeBlock* thisObject = jsCast<UnlinkedCodeBlock*>(cell);
    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
    ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());
    Base::visitChildren(thisObject, visitor);
    visitor.append(&thisObject->m_symbolTable);
    for (FunctionExpressionVector::iterator ptr = thisObject->m_functionDecls.begin(), end = thisObject->m_functionDecls.end(); ptr != end; ++ptr)
        visitor.append(ptr);
    for (FunctionExpressionVector::iterator ptr = thisObject->m_functionExprs.begin(), end = thisObject->m_functionExprs.end(); ptr != end; ++ptr)
        visitor.append(ptr);
    visitor.appendValues(thisObject->m_constantRegisters.data(), thisObject->m_constantRegisters.size());
    if (thisObject->m_rareData) {
        for (size_t i = 0, end = thisObject->m_rareData->m_regexps.size(); i != end; i++)
            visitor.append(&thisObject->m_rareData->m_regexps[i]);
    }
}