• gsathya's avatar
    Promises: Short circuit promise resolution procedure · 41c875a6
    gsathya authored
    When |ResolvePromise| is resolved with a promise that is
    already fulfilled or resolved, we can short circuit the
    promise resolution procedure by directly looking up the
    result from the promise. We save creating two closures, enqueuing in
    the promise queue, and running through PromiseThen.
    
    This patch uses IsPromise to check if the |resolution| object is a native
    promise and also checks if |resolution.then| hasn't been monkey
    patched.
    
    This patch adds some redundant code from PromiseThen like setting
    the promiseHasHandlerSymbol and calling PromiseRevokeReject call,
    which would've been taken care of by PromiseThen in the old code path.
    
    This patch results in a 13.8% improvement(over 5 runs) in the bluebird
    benchmarks.
    
    BUG=v8:5046
    
    Review-Url: https://codereview.chromium.org/2028253004
    Cr-Commit-Position: refs/heads/master@{#36765}
    41c875a6
Name
Last commit
Last update
..
OWNERS Loading commit data...
array-iterator.js Loading commit data...
array.js Loading commit data...
arraybuffer.js Loading commit data...
collection-iterator.js Loading commit data...
collection.js Loading commit data...
harmony-async-await.js Loading commit data...
harmony-atomics.js Loading commit data...
harmony-regexp-exec.js Loading commit data...
harmony-sharedarraybuffer.js Loading commit data...
harmony-simd.js Loading commit data...
harmony-species.js Loading commit data...
harmony-string-padding.js Loading commit data...
harmony-unicode-regexps.js Loading commit data...
i18n.js Loading commit data...
icu-case-mapping.js Loading commit data...
intl-extra.js Loading commit data...
iterator-prototype.js Loading commit data...
macros.py Loading commit data...
math.js Loading commit data...
messages.js Loading commit data...
prologue.js Loading commit data...
promise-extra.js Loading commit data...
promise.js Loading commit data...
proxy.js Loading commit data...
regexp.js Loading commit data...
runtime.js Loading commit data...
spread.js Loading commit data...
string-iterator.js Loading commit data...
string.js Loading commit data...
symbol.js Loading commit data...
templates.js Loading commit data...
typedarray.js Loading commit data...
v8natives.js Loading commit data...
weak-collection.js Loading commit data...