• gsathya's avatar
    Revert of Promises: Make PromiseSet operation monomorphic (patchset #1 id:1 of... · 9b606523
    gsathya authored
    Revert of Promises: Make PromiseSet operation monomorphic (patchset #1 id:1 of https://codereview.chromium.org/2025073002/ )
    
    Reason for revert:
    As a side effect of calling PromiseSet from
    FulfillPromise, clears the deferred symbol and the
    resolve/reject callback symbols. Although this
    isn't strictly necessary, not doing this seems to
    result in a leak as seen in --
    
    https://bugs.chromium.org/p/chromium/issues/detail?id=617137#c10
    
    Original issue's description:
    > Promises: Make PromiseSet operation monomorphic
    >
    > The PromiseSet operation is called with two types of promises
    > 1) A newly created promise object with no properties
    > 2) Promise object with callbacks and other properties
    >
    > PromiseSet is called with the first type of promise (with no
    > properties) from multiple call sites. PromiseSet is called with the
    > second type of promise object only from FulfillPromise. Furthermore,
    > this call only sets the value and status of the promise, the rest of
    > the values are reset to UNDEFINED (which isn't necessary).
    >
    > This patch inlines the calls to set the value and status of the
    > promise in FulfillPromise, instead of calling out to PromiseSet.
    >
    > This patch also reduces the number of symbol lookups, as we only set
    > the value and status of the promise, and don't change the callback or
    > deferred symbols.
    >
    > This patch results in a performance improvement of 2.8% over 5 runs in
    > the bluebird benchmark.
    >
    > BUG=v8:5046
    >
    > Committed: https://crrev.com/df4f8a2b9ee9e474e674301718d19b63650a0ba5
    > Cr-Commit-Position: refs/heads/master@{#36688}
    
    TBR=littledan@chromium.org,adamk@chromium.org
    # Not skipping CQ checks because original CL landed more than 1 days ago.
    BUG=v8:5046
    
    Review-Url: https://codereview.chromium.org/2047553002
    Cr-Commit-Position: refs/heads/master@{#36766}
    9b606523
promise.js 19.9 KB