1. 08 Jun, 2016 2 commits
  2. 07 Jun, 2016 36 commits
  3. 06 Jun, 2016 2 commits
    • 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
    • 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