• weinig@apple.com's avatar
    [JS] Implement Promise.all() · 7817ee1e
    weinig@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=126510
    
    Reviewed by Gavin Barraclough.
    
    Source/JavaScriptCore: 
    
    Add Promise.all() implementation and factor out performing resolves and rejects
    on deferreds to share a bit of code. Also moves the abruptRejection helper to
    JSPromiseDeferred so it can be used in JSPromiseFunctions.
    
    * runtime/CommonIdentifiers.h:
    * runtime/JSPromiseConstructor.cpp:
    (JSC::JSPromiseConstructorFuncCast):
    (JSC::JSPromiseConstructorFuncResolve):
    (JSC::JSPromiseConstructorFuncReject):
    (JSC::JSPromiseConstructorFuncAll):
    * runtime/JSPromiseDeferred.cpp:
    (JSC::updateDeferredFromPotentialThenable):
    (JSC::performDeferredResolve):
    (JSC::performDeferredReject):
    (JSC::abruptRejection):
    * runtime/JSPromiseDeferred.h:
    * runtime/JSPromiseFunctions.cpp:
    (JSC::promiseAllCountdownFunction):
    (JSC::createPromiseAllCountdownFunction):
    * runtime/JSPromiseFunctions.h:
    * runtime/JSPromiseReaction.cpp:
    (JSC::ExecutePromiseReactionMicrotask::run):
    
    LayoutTests: 
    
    Enabled and fix the existing Promise.all() test case.
    - Promise.all() and Promise.all({}) should reject by my reading of the spec.
    Also removes the Promise.all() shim used by the crypto tests.
    
    * crypto/subtle/resources/common.js:
    * js/dom/Promise-static-all-expected.txt:
    * js/dom/Promise-static-all.html:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@161365 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    7817ee1e
CommonIdentifiers.h 6.42 KB