1. 01 Feb, 2017 1 commit
  2. 26 Jan, 2017 2 commits
  3. 20 Jan, 2017 5 commits
  4. 17 Jan, 2017 2 commits
  5. 16 Jan, 2017 2 commits
  6. 12 Jan, 2017 1 commit
    • littledan's avatar
      [intl] Remove indirection in Intl objects · db13ed1d
      littledan authored
      With the new initialization semantics, the V8 ECMA 402 (Intl)
      implementation does not need to indirect through a symbol to
      get at the underlying object. This patch removes that indirection,
      simplifying the implementation.
      
      R=yangguo@chromium.org
      BUG=v8:5751
      CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux_noi18n_rel_ng
      
      Review-Url: https://codereview.chromium.org/2601833002
      Cr-Commit-Position: refs/heads/master@{#42281}
      db13ed1d
  7. 10 Jan, 2017 1 commit
  8. 23 Dec, 2016 2 commits
  9. 21 Dec, 2016 1 commit
  10. 16 Dec, 2016 1 commit
  11. 13 Dec, 2016 1 commit
    • gsathya's avatar
      PromiseHandle port to TF · 9fc3c017
      gsathya authored
      Splits PromiseHandle into two TF builtins to account for catch
      prediction. An exception in PromiseHandleReject builtin results in a
      "caught" prediction whereas an expception in PromiseHandle results in a
      "promise rejection" prediction.
      
      An extra is_exception_caught bit is added to Code to mark this catch
      prediction behavior.
      
      BUG=v8:5343
      
      Review-Url: https://codereview.chromium.org/2572623002
      Cr-Commit-Position: refs/heads/master@{#41683}
      9fc3c017
  12. 08 Dec, 2016 1 commit
    • gsathya's avatar
      [promises] Port ResolvePromise to TF · 11359e33
      gsathya authored
      -- Moves promiseHasHandlerSymbol to inobject property
      -- Ports PromiseResolveClosure to TF
      -- Fix a non spec async-await test which fails now because we do a map
      check for native promise check (instead of IsPromise). Changing the
      constructor (in the test) invalidates the map check.
      
      This patch results in a 7.1% performance improvement in the bluebird
      benchmark (over 5 runs).
      
      BUG=v8:5343
      
      Review-Url: https://codereview.chromium.org/2541283002
      Cr-Commit-Position: refs/heads/master@{#41569}
      11359e33
  13. 06 Dec, 2016 3 commits
  14. 05 Dec, 2016 1 commit
    • gsathya's avatar
      Object · 30b564c7
      gsathya authored
      -- New JSObject for promises: JSPromise
      
      Builtins
      -- PromiseThen TFJ
      -- PromiseCreateAndSet TFJ for internal use
      -- PerformPromiseThen TFJ for internal use
      -- PromiseInit for initial promise setup
      -- SpeciesConstructor for use in PromiseThen
      -- ThrowIfNotJSReceiver for use in SpeciesConstructor
      -- AppendPromiseCallback to update FixedArray with new callback
      -- InternalPerformPromiseThen
      
      Promises.js
      -- Cleanup unused symbols
      -- Remove PerformPromiseThen
      -- Remove PromiseThen
      -- Remove PromiseSet
      -- Remove PromiseAttachCallbacks
      
      Runtime
      -- PromiseSet to set promise inobject values
      -- Refactor functions to use FixedArrays for callbacks instead of
         JSArray
      -- Runtime_PromiseStatus to return promise status
      -- Runtime_PromiseResult to return promise result
      -- Runtime_PromiseDeferred to return deferred attached to promise
      -- Runtime_PromiseRejectReactions to return reject reactions attached
         to promise
      
      This CL results in a 13.07% improvement in the promises benchmark
      (over 5 runs).
      
      BUG=v8:5343
      
      Review-Url: https://codereview.chromium.org/2536463002
      Cr-Commit-Position: refs/heads/master@{#41503}
      30b564c7
  15. 24 Oct, 2016 1 commit
  16. 19 Oct, 2016 1 commit
  17. 18 Oct, 2016 1 commit
    • caitp's avatar
      [builtins] implement Array.prototype[@@iterator] in TFJ builtins · 86d0dd36
      caitp authored
      Implements the variations of CreateArrayIterator() in TFJ builtins
      (ArrayPrototypeValues, ArrayPrototypeEntries and ArrayPrototypeKeys), and
      provides two new Object types with numerous maps which identify certain
      behaviours, which will be useful for inlining.
      
      Removes src/js/array-iterator.js entirely
      
      Also adds support for printing Symbol literals inserted by the Parser during
      desugaring when FLAG_print_builtin_ast is set to true.
      
      BUG=v8:5388
      R=bmeurer@chromium.org, cbruni@chromium.org
      TBR=ulan@chromium.org
      
      Review-Url: https://codereview.chromium.org/2405253006
      Cr-Commit-Position: refs/heads/master@{#40373}
      86d0dd36
  18. 17 Oct, 2016 1 commit
  19. 13 Oct, 2016 1 commit
  20. 10 Oct, 2016 3 commits
  21. 06 Oct, 2016 1 commit
  22. 05 Oct, 2016 1 commit
    • jgruber's avatar
      [regexp] Port RegExpConstructor to C++ · d5151564
      jgruber authored
      This moves the RegExp constructor to C++. Local runs of octane/regexp are
      performance-neutral:
      
      C++: 4970.1 +- 404.981
      JS: 4869.2 +- 586.743
      
      That's probably only the case because exec and replace dominate
      octane/regexp. There's potential for improvement here, for instance by
      adding a fast-path if new.target is an unmodified JSRegExp function.
      
      BUG=v8:5339
      
      Review-Url: https://codereview.chromium.org/2384613004
      Cr-Commit-Position: refs/heads/master@{#39981}
      d5151564
  23. 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
  24. 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
  25. 19 Sep, 2016 1 commit
    • littledan's avatar
      Async/await Promise dependency graph · 7265fdde
      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)
      
      BUG=v8:5167
      
      Review-Url: https://codereview.chromium.org/2317383002
      Cr-Commit-Position: refs/heads/master@{#39522}
      7265fdde
  26. 13 Sep, 2016 1 commit
    • littledan's avatar
      Mark await expressions as caught or uncaught · edb4d315
      littledan authored
      Handle some examples of the "asynchronous case" by marking await expressions
      as either caught or uncaught; in the caught case, this marks the Promise passed
      in as having a catch predicted. The marking is done in AST numbering, which
      chooses between two different runtime function calls based on catch prediction.
      
      BUG=v8:5167
      
      Review-Url: https://codereview.chromium.org/2276243002
      Cr-Commit-Position: refs/heads/master@{#39394}
      edb4d315
  27. 06 Sep, 2016 1 commit