1. 11 Jan, 2016 7 commits
  2. 09 Jan, 2016 1 commit
  3. 08 Jan, 2016 31 commits
  4. 07 Jan, 2016 1 commit
    • caitpotter88's avatar
      [promise] Make Promise.all match spec, and always respect [[AlreadyResolved]] · 7459d8ce
      caitpotter88 authored
      Testing the promise status is not enough to ensure that resolve functions are
      called only once.
      
      This change adds a similar version of the [[AlreadyResolved]] slot to the
      Promise.all resolve element function, and also ensures that [[AlreadyResolved]]
      is respected in the Promise executor, and when resolving thenables. This means
      replacing PromiseReject() shortcuts with promiseCapability.reject(), which has
      an [[AlreadyResolved]] record in a context slot.
      
      Also ensures that changes to the list accumulator in Promise.all() is not observable
      via accessors installed in the Array prototype chain, using the same mechanism used
      in several Array methods.
      
      Fixes the following Test262 tests:
      - built-ins/Promise/all/call-resolve-element-items.js
      - built-ins/Promise/all/call-resolve-element.js
      - built-ins/Promise/all/call-resolve-element-after-return.js
      - built-ins/Promise/all/same-reject-function.js
      - built-ins/Promise/all/resolve-from-same-thenable.js
      - built-ins/Promise/all/resolve-before-loop-exit.js
      - built-ins/Promise/all/resolve-before-loop-exit-from-same.js
      - built-ins/Promise/exception-after-resolve-in-executor.js
      - built-ins/Promise/exception-after-resolve-in-thenable-job.js
      - built-ins/Promise/all/does-not-invoke-array-setters.js
      
      BUG=v8:4633
      LOG=N
      R=littledan@chromium.org, cbruni@chromium.org
      
      Review URL: https://codereview.chromium.org/1534813005
      
      Cr-Commit-Position: refs/heads/master@{#33163}
      7459d8ce