1. 18 Nov, 2016 1 commit
  2. 17 Nov, 2016 1 commit
  3. 16 Nov, 2016 1 commit
    • jgruber's avatar
      [debug-wrapper] Further extend the debug wrapper · b06c4ce5
      jgruber authored
      This CL further extends the debug wrapper, migrates around 60 tests, and
      removes a few tests that use functionality we will not support anymore.
      
      In more detail:
      
      * Removed tests that use:
        * enable/disable individual breakpoints
        * invocationText()
        * the ScriptCollected event
        * showBreakPoints
        * evalFromScript (and similar)
        * mirror.constructedBy and mirror.referencedBy
        * event_data.promise()
      * Some frame.evaluate uses were adapted since due to differences between
        remote objects (inspector) and mirrors. For instance, exceptions are
        currently not recreated exactly, since the inspector protocol does not
        give us the stack and message separately. Other objects (such as
        'this' in debug-evaluate-receiver-before-super) need to be explicitly
        converted to a string before the test works correctly.
      * Ensure that inspector stores the script before sending ScriptParsed and
        ScriptFailedToParse events in order to be able to use the script from
        within those events.
      * Better remote object reconstruction (e.g. for undefined and arrays).
      * New functionality in wrapper:
        * debuggerFlags().breakPointsActive.setValue()
        * scripts()
        * execState.setVariableValue()
        * execState.scopeObject().value()
        * execState.scopeObject().property()
        * execState.frame().allScopes()
        * eventData.exception()
        * eventData.script()
        * setBreakPointsActive()
      
      BUG=v8:5530
      
      Review-Url: https://codereview.chromium.org/2497973002
      Cr-Commit-Position: refs/heads/master@{#41019}
      b06c4ce5
  4. 11 Nov, 2016 1 commit
    • verwaest's avatar
      Make private symbols non-enumerable · 135b9f93
      verwaest authored
      Methods in the runtime that enumerate over properties should never deal with private symbols. Most commonly such methods only loop over enumerable properties. This fix avoids accidentally handling private symbols in methods that only deal with enumerable properties. Methods that need to look at non-enumerable properties as well still have to manually filter private symbols (e.g., the KeyAccumulator).
      
      BUG=chromium:664411
      
      Review-Url: https://codereview.chromium.org/2499593002
      Cr-Commit-Position: refs/heads/master@{#40932}
      135b9f93
  5. 08 Nov, 2016 3 commits
  6. 07 Nov, 2016 2 commits
  7. 04 Nov, 2016 1 commit
  8. 31 Oct, 2016 1 commit
  9. 28 Oct, 2016 1 commit
  10. 25 Oct, 2016 1 commit
  11. 14 Oct, 2016 1 commit
  12. 12 Oct, 2016 1 commit
  13. 11 Oct, 2016 1 commit
  14. 24 Sep, 2016 1 commit
  15. 23 Sep, 2016 1 commit
    • littledan's avatar
      Improve stack traces for async functions · f296dad9
      littledan authored
      This patch tracks the stack of async functions differently from other
      Promise async stack tracking. With this patch, the stack trace of a
      callstack of async functions should look similarly to the call stack
      if all of the functions were synchronous. An example can be found in
      the updated test expectations: https://codereview.chromium.org/2362923002 .
      
      The new stack traces are implemented using existing mechanisms in the
      inspector. The inspector has two ways to save async stack traces: recurring
      and non-recurring stacks. An example of a non-recurring stack is setTimeout,
      and a recurring one is saved for setInterval. Recurring stacks are deleted
      only when a special "cancel" function is called, rather than being deleted
      after being used the first time. Previous Promise async stack tracking always
      used non-recurring stacks.
      
      For async functions, this patch saves a recurring stack. The top frame of
      the stack is duplicated, as the resuming function contains a similar frame;
      the devtools frontend is responsible for removing or marking this frame,
      which it can do based on seeing the [async function] line which follows it.
      The second frame will instead be provided by the resuming execution
      context. The recurring stack is saved when the async function is entered, and
      it is deleted from a finally block. The id of the stack is saved in the outer
      Promise being constructed by the async function. When an intermediate
      throwaway Promise will be triggered as a reaction, it will be identified as
      such based on its debugging metadata, and the corresponding async function's
      recurring stack will be used.
      
      BUG=v8:4483
      
      Review-Url: https://codereview.chromium.org/2357423002
      Cr-Commit-Position: refs/heads/master@{#39695}
      f296dad9
  16. 20 Sep, 2016 2 commits
    • littledan's avatar
      Reland Async/await Promise dependency graph · 1b414e28
      littledan authored
      This patch knits together Promises returned by async/await such that when
      one async function awaits the result of another one, catch prediction works
      across the boundaries, whether the exception comes synchronously or
      asynchronously. Edges are added in three places:
      - When a locally uncaught await happens, if the value passed into await
        is a Promise, from the awaited value to the Promise under construction
        in the broader async function
      - From a "throwaway" Promise, which may be found on the Promise debug
        stack, to the Promise under construction in the async function that
        surrounds it
      - When a Promise is resolved with another Promise (e.g., when returning a
        Promise from an async function)
      
      In this reland, the caught tests are broken up into four parts to avoid
      timeouts.
      
      BUG=v8:5167
      
      Review-Url: https://codereview.chromium.org/2346363004
      Cr-Commit-Position: refs/heads/master@{#39564}
      1b414e28
    • littledan's avatar
      Revert of Async/await Promise dependency graph (patchset #30 id:550001 of... · 100336f5
      littledan authored
      Revert of Async/await Promise dependency graph (patchset #30 id:550001 of https://codereview.chromium.org/2317383002/ )
      
      Reason for revert:
      Need to break up test into smaller tests to avoid timeouts
      
      Original issue's description:
      > Async/await Promise dependency graph
      >
      > This patch knits together Promises returned by async/await such that when
      > one async function awaits the result of another one, catch prediction works
      > across the boundaries, whether the exception comes synchronously or
      > asynchronously. Edges are added in three places:
      > - When a locally uncaught await happens, if the value passed into await
      >   is a Promise, from the awaited value to the Promise under construction
      >   in the broader async function
      > - From a "throwaway" Promise, which may be found on the Promise debug
      >   stack, to the Promise under construction in the async function that
      >   surrounds it
      > - When a Promise is resolved with another Promise (e.g., when returning a
      >   Promise from an async function)
      >
      > BUG=v8:5167
      >
      > Committed: https://crrev.com/7265fdde7c76b9f875b40b0b139515936d491d64
      > Cr-Commit-Position: refs/heads/master@{#39522}
      
      TBR=adamk@chromium.org,jgruber@chromium.org,kozyatinskiy@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:5167
      
      Review-Url: https://codereview.chromium.org/2351953002
      Cr-Commit-Position: refs/heads/master@{#39523}
      100336f5
  17. 19 Sep, 2016 5 commits
  18. 16 Sep, 2016 1 commit
    • littledan's avatar
      Fix async/await memory leak · a0ba18e9
      littledan authored
      This patch closes a memory leak in async/await where the desugaring
      was creating a situation analagous to that described in v8:5002.
      Intermediate Promises were being kept alive, so a long-running loop
      would cause linear memory usage on the heap. This patch returns
      undefined to the 'then' callback passed into PerformPromiseThen
      in order to avoid this hazard. Test expectations are fixed to remove
      expecting extraneous events which occurred on Promises that are
      now not given unnecessarily complex resolution paths before being
      thrown away.
      
      BUG=v8:5390
      
      Review-Url: https://codereview.chromium.org/2334323006
      Cr-Commit-Position: refs/heads/master@{#39479}
      a0ba18e9
  19. 15 Sep, 2016 1 commit
  20. 25 Aug, 2016 1 commit
  21. 24 Aug, 2016 1 commit
    • littledan's avatar
      Change which ExceptionEvents are triggered by Promises · 013e49f7
      littledan authored
      To make async/await catch prediction work well, this patch regularizes
      the exception events sent to DevTools from various places in the Promise
      lifecycle. The core is that there should be an exception event when the
      rejection first starts, rather than when it is propagated.
      
      - Several cases within Promise code which propagate errors are
        modified to not trigger a new ExceptionEvent in that case, such
        as .then on a rejected Promise and returning a rejected Promise
        from .then, as well as Promise.race and Promise.all.
      - Make Promise.reject() create an ExceptionEvent, subject to catch
        prediction based on the Promise stack. This is important
        so that, e.g., if "await Promise.reject()" will trigger a new
        throw (rather than a silent rethrow of something that never
        triggered an event in the first place).
      
      BUG=v8:5167
      
      Review-Url: https://codereview.chromium.org/2244003003
      Cr-Commit-Position: refs/heads/master@{#38847}
      013e49f7
  22. 18 Aug, 2016 1 commit
  23. 17 Aug, 2016 2 commits
    • bakkot's avatar
      Reland of Amend DataView, ArrayBuffer, and TypedArray methods to use ToIndex.... · a3c13435
      bakkot authored
      Reland of Amend DataView, ArrayBuffer, and TypedArray methods to use ToIndex. (patchset #2 id:170001 of https://codereview.chromium.org/2113593002/ )
      
      Reason for revert:
      WebGL tests have been updated and rolled (at https://codereview.chromium.org/2227023002), so this should no longer fail outdated tests.
      
      Original issue's description:
      > Revert of Amend DataView, ArrayBuffer, and TypedArray methods to use ToIndex. (patchset #8 id:140001 of https://codereview.chromium.org/2090353003/ )
      >
      > Reason for revert:
      > Speculative revert to unblock roll: https://codereview.chromium.org/2107223003/
      >
      > Original issue's description:
      > > Amend DataView, ArrayBuffer, and TypedArray methods to use ToIndex.
      > >
      > > The spec was modified to relax some requirements which implementors had not been
      > > enforcing. Part of this process involved introducing a new abstract operation
      > > ToIndex, which had partial overlap with our existing semantics as well as some
      > > differences (most notably treating undefined as 0). Test262 tests were introduced to
      > > check for the new semantics, some of which we were failing. This patch amends the
      > > parts of our implementation corresponding to specification algorithms which use
      > > ToIndex to follow its semantics precisely.
      > >
      > > BUG=v8:4784,v8:5120
      > >
      > > Committed: https://crrev.com/09720349ea058d178521ec58d0a5676443a5a132
      > > Cr-Commit-Position: refs/heads/master@{#37406}
      >
      > TBR=littledan@chromium.org,adamk@chromium.org,bakkot@google.com
      > # Skipping CQ checks because original CL landed less than 1 days ago.
      > NOPRESUBMIT=true
      > NOTREECHECKS=true
      > NOTRY=true
      > BUG=v8:4784,v8:5120
      >
      > Committed: https://crrev.com/b1f7f1f4e41a723d5f997738a07e35a031713b8f
      > Cr-Commit-Position: refs/heads/master@{#37417}
      
      TBR=littledan@chromium.org,adamk@chromium.org,hablich@chromium.org
      # Not skipping CQ checks because original CL landed more than 1 days ago.
      BUG=v8:4784,v8:5120
      
      Review-Url: https://codereview.chromium.org/2247073004
      Cr-Commit-Position: refs/heads/master@{#38689}
      a3c13435
    • neis's avatar
      [interpreter] Don't assume generator functions do an initial yield. · 7fe4d930
      neis authored
      Async functions are implemented via special generator functions; special in the
      sense that they generally do not immediately yield.  However, our generators
      implementation still assumed that every generator function initially yields
      (concretely: before doing the state dispatch in a loop header).  This CL fixes
      that.
      
      R=littledan@chromium.org, rmcilroy@chromium.org
      BUG=chromium:638019
      
      Review-Url: https://codereview.chromium.org/2253033002
      Cr-Commit-Position: refs/heads/master@{#38684}
      7fe4d930
  24. 12 Aug, 2016 1 commit
  25. 10 Aug, 2016 1 commit
  26. 08 Aug, 2016 1 commit
  27. 06 Aug, 2016 1 commit
    • littledan's avatar
      [promise] Async/await edge case spec compliance fix · 7826bfa7
      littledan authored
      - Don't read .constructor when returning a Promise from an async function.
        Instead, call out to the internals of Promise.resolve directly.
        This is done by adding back in an "optimization" from an earlier form of
        the async/await code written by Caitlin Potter.
      - Async functions always return a new Promise with a distinct identity,
        even if they simply return another Promise.
      
      R=caitp@igalia.com
      BUG=v8:4483
      
      Review-Url: https://codereview.chromium.org/2219623002
      Cr-Commit-Position: refs/heads/master@{#38404}
      7826bfa7
  28. 04 Aug, 2016 1 commit
    • caitp's avatar
      [promise] separate PerformPromiseThen from PromiseThen · 0272aa50
      caitp authored
      The `PerformPromiseThen` spec-internal operation is used by the async functions
      proposal, in order to ensure that AwaitExpressions are not observable via
      usual mechanisms/hooks, such as Symbol.species.
      
      BUG=v8:5253
      R=littledan@chromium.org, adamk@chromium.org, gsathya@chromium.org, yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2209433003
      Cr-Commit-Position: refs/heads/master@{#38353}
      0272aa50
  29. 02 Aug, 2016 1 commit
  30. 25 Jul, 2016 1 commit
  31. 22 Jul, 2016 1 commit
    • jwolfe's avatar
      Adjust whitespace to make tests oblivious to --harmony-function-tostring · 3cfd80d6
      jwolfe authored
      See discussion in https://codereview.chromium.org/2156303002/#msg8
      
      With the new --harmony-function-tostring behavior, these tests would
      fail without this change. This change makes the tests pass regardless
      of whether or not --harmony-function-tostring is used.
      
      All of these changes are simply inserting a space after the "function"
      keyword to match the current function toString behavior. When
      --harmony-function-tostring is enabled, the toString behavior matches
      the spacing used in the function declaration. With the declaration
      matching the current formatting, the toString behavior becomes
      unaffected by --harmony-function-tostring.
      
      BUG=v8:4958
      LOG=n
      
      Review-Url: https://codereview.chromium.org/2161413002
      Cr-Commit-Position: refs/heads/master@{#37959}
      3cfd80d6