Ignore:
Timestamp:
Apr 5, 2017, 2:19:37 PM (8 years ago)
Author:
[email protected]
Message:

WebAssembly: Plans should be able to have more than one completion task.
https://bugs.webkit.org/show_bug.cgi?id=170516

Reviewed by Saam Barati.

This patch also eliminates the need for blocked tasks on the
PromiseDeferredTimer and pendingPromise on Wasm::Plan.

  • runtime/PromiseDeferredTimer.cpp:

(JSC::PromiseDeferredTimer::doWork):
(JSC::PromiseDeferredTimer::cancelPendingPromise):
(JSC::PromiseDeferredTimer::scheduleBlockedTask): Deleted.

  • runtime/PromiseDeferredTimer.h:
  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::Plan):
(JSC::Wasm::Plan::addCompletionTask):
(JSC::Wasm::Plan::complete):

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::setMode):
(JSC::Wasm::Plan::mode):
(JSC::Wasm::Plan::setModeAndPromise): Deleted.
(JSC::Wasm::Plan::pendingPromise): Deleted.

  • wasm/WasmWorklist.cpp:

(JSC::Wasm::Worklist::enqueue):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::instantiate):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/runtime/PromiseDeferredTimer.h

    r214936 r214970  
    5656    void scheduleWorkSoon(JSPromiseDeferred*, Task&&);
    5757
    58     // Blocked tasks should only be registered while holding the JS API lock. If we didn't require holding the
    59     // JS API lock then there might be a race where the promise you are waiting on is run before your task is
    60     // registered.
    61     void scheduleBlockedTask(JSPromiseDeferred*, Task&&);
    62 
    6358    void stopRunningTasks() { m_runTasks = false; }
    6459
     
    7166    bool m_shouldStopRunLoopWhenAllPromisesFinish { false };
    7267    Vector<std::tuple<JSPromiseDeferred*, Task>> m_tasks;
    73     HashMap<JSPromiseDeferred*, Vector<Task>> m_blockedTasks;
    7468};
    7569
Note: See TracChangeset for help on using the changeset viewer.