Ejemplo n.º 1
0
bool JSObjectIsFunction(JSContextRef, JSObjectRef object)
{
    if (!object)
        return false;
    CallData callData;
    JSCell* cell = toJS(object);
    return cell->methodTable()->getCallData(cell, callData) != CallTypeNone;
}
Ejemplo n.º 2
0
bool JSObjectIsFunction(JSContextRef ctx, JSObjectRef object)
{
    if (!object)
        return false;
    JSLockHolder locker(toJS(ctx));
    CallData callData;
    JSCell* cell = toJS(object);
    return cell->methodTable()->getCallData(cell, callData) != CallType::None;
}
Ejemplo n.º 3
0
bool JSObjectIsFunction(JSContextRef ctx, JSObjectRef object)
{
    if (!object)
        return false;
    ExecState* exec = toJS(ctx);
    VM& vm = exec->vm();
    JSLockHolder locker(vm);
    CallData callData;
    JSCell* cell = toJS(object);
    return cell->methodTable(vm)->getCallData(cell, callData) != CallType::None;
}
void DOMGCOutputConstraint::executeImpl(SlotVisitor& visitor)
{
    Heap& heap = m_vm.heap;
    
    if (heap.mutatorExecutionVersion() == m_lastExecutionVersion)
        return;
    
    m_lastExecutionVersion = heap.mutatorExecutionVersion();
    
    m_clientData.forEachOutputConstraintSpace(
        [&] (Subspace& subspace) {
            auto func = [] (SlotVisitor& visitor, HeapCell* heapCell, HeapCell::Kind) {
                SetRootMarkReasonScope rootScope(visitor, SlotVisitor::RootMarkReason::DOMGCOutput);
                JSCell* cell = static_cast<JSCell*>(heapCell);
                cell->methodTable(visitor.vm())->visitOutputConstraints(cell, visitor);
            };
            
            visitor.addParallelConstraintTask(subspace.forEachMarkedCellInParallel(func));
        });
}