• 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
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
Makefile.nacl Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...