1. 19 Jul, 2017 1 commit
  2. 11 Jul, 2017 1 commit
  3. 14 Jun, 2017 1 commit
    • Caitlin Potter's avatar
      Reland "[builtins] port Promise.all to CSA" · 8ada7538
      Caitlin Potter authored
      Simplifies the implementation of IteratorClose in IteratorBuiltinsAssembler, and makes clear that it is only invoked when an exception occurs. Adds exception handling support to GetIterator, IteratorStep, and IteratorCloseOnException.
      
      Moves the Promise.all resolveElement closure and it's caller to
      builtins-promise-gen.cc.
      
      Instead of creating an internal array (and copying its elements into a
      result
      array), a single JSArray is allocated, and appended with
      BuildAppendJSArray(),
      falling back to %CreateDataProperty(), and elements are updated in the
      resolve
      closure the same way. This should always be unobservable.
      
      This CL increases the size of snapshot_blob.bin on an x64.release build
      by 8.51kb
      
      BUG=v8:5343
      R=cbruni@chromium.org, gsathysa@chromium.org, jgruber@chromium.org, hpayer@chromium.org, tebbi@chromium.org
      
      Change-Id: I29c4a529154ef49ad65555ce6ddc2c5b7c9de6b3
      Reviewed-on: https://chromium-review.googlesource.com/508473
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45946}
      8ada7538
  4. 07 Jun, 2017 1 commit
  5. 24 May, 2017 1 commit
  6. 15 May, 2017 1 commit
  7. 29 Apr, 2017 5 commits
  8. 21 Apr, 2017 5 commits
  9. 19 Apr, 2017 1 commit
    • jgruber's avatar
      [string] Widen StringIndexOf fast path · 4cb01188
      jgruber authored
      The StringIndexOf fast path used to be very narrow, only allowing
      one-byte single-char search strings (and a one-byte subject string).
      
      This changes the CSA fast path to call into our internal SearchString C++
      function instead (after attempting to unpack both Strings), and can handle
      strings of arbitrary length and encoding. The only remaining runtime call is
      when either string needs to be flattened.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2814373002
      Cr-Commit-Position: refs/heads/master@{#44718}
      4cb01188
  10. 13 Apr, 2017 1 commit
  11. 11 Apr, 2017 1 commit
  12. 08 Apr, 2017 1 commit
  13. 06 Apr, 2017 1 commit
  14. 31 Mar, 2017 1 commit
  15. 29 Mar, 2017 1 commit
    • Caitlin Potter's avatar
      [async-iteration] implement AsyncGenerator · bf463c4d
      Caitlin Potter authored
      - Introduce new struct AsyncGeneratorRequest, which holds
        information pertinent to resuming execution of an
        AsyncGenerator, such as the Promise associated with the async
        generator request. It is intended to be used as a singly
        linked list, and holds a pointer to the next item in te queue.
      
      - Introduce JSAsyncGeneratorObject (subclass of
        JSGeneratorObject), which includes several new internal fields
        (`queue` which contains a singly linked list of
        AsyncGeneratorRequest objects, and `await_input` which
        contains the sent value from an Await expression (This is
        necessary to prevent function.sent (used by yield*) from
        having the sent value observably overwritten during
        execution).
      
      - Modify SuspendGenerator to accept a set of Flags, which
        indicate whether the suspend is for a Yield or Await, and
        whether it takes place on an async generator or ES6
        generator.
      
      - Introduce interpreter intrinsics and TF intrinsic lowering for
        accessing the await input of an async generator
      
      - Modify the JSGeneratorStore operator to understand whether or
        not it's suspending for a normal yield, or an AsyncGenerator
        Await. This ensures appropriate registers are stored.
      
      - Add versions of ResumeGeneratorTrampoline which store the
        input value in a different field depending on wether it's an
        AsyncGenerator Await resume, or an ordinary resume. Also modifies
        whether debug code will assert that the generator object is a
        JSGeneratorObject or a JSAsyncGeneratorObject depending on the
        resume type.
      
      BUG=v8:5855
      R=bmeurer@chromium.org, rmcilroy@chromium.org, jgruber@chromium.org,
      littledan@chromium.org, neis@chromium.org
      TBR=marja@chromium.org
      
      Change-Id: I9d58df1d344465fc937fe7eed322424204497187
      Reviewed-on: https://chromium-review.googlesource.com/446961
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#44240}
      bf463c4d
  16. 22 Mar, 2017 1 commit
    • mvstanton's avatar
      [Builtins] New Array.prototype.filter implementation observability bug. · 2c84924f
      mvstanton authored
      filter creates an output array with the Array species constructor for
      storing values from the input array that pass the user-supplied
      predicate function. Our new array builtins are implemented such that
      if we fall out of the fast path, we'll pick up where we left off
      in a continuation function. It's important to pass the index of
      where we left off appending to the output array, because otherwise
      we will read it at the start of the continuation function.
      
      That would be observable, and a spec violation.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2771483002
      Cr-Commit-Position: refs/heads/master@{#44023}
      2c84924f
  17. 21 Mar, 2017 1 commit
  18. 16 Mar, 2017 2 commits
    • aseemgarg's avatar
      [Atomics] Make Atomics.compareExchange a builtin using TF · 82b5c8c9
      aseemgarg authored
      BUG=v8:4614
      R=binji@chromium.org
      
      Review-Url: https://codereview.chromium.org/2649703002
      Cr-Commit-Position: refs/heads/master@{#43878}
      82b5c8c9
    • danno's avatar
      [builtins] Separate Array.prototype.* CSA builtins into two parts · 7de21c4d
      danno authored
      Previous to this CL, CSA-optimized Array builtins--like forEach, some, and
      every--were written in a single, monolithic block of CSA code.
      
      This CL teases the code for each of these builtins apart into two chunks, a main
      body with optimizations for fast cases, and a "continuation" builtin that
      performs a spec-compliant, but slower version of the main loop of the
      builtin. The general idea is that when the "fast" main body builtin encounters
      an unexpected condition that invalidates assumptions allowing fast-case code, it
      tail calls to the slow, correct version of the loop that finishes the builtin
      execution.
      
      This separation currently doens't really provide any specific advantage over the
      combined version. However, it paves the way to TF-optimized inlined Array
      builtins. Inlined Array builtins may trigger deopts during the execution of the
      builtin's loop, and those deopt must continue execution from the point at which
      they failed. With some massaging of the deoptimizer, it will be possible to make
      those deopt points create an extra frame on the top of the stack which resumes
      execution in the slow-loop builtin created in this CL.
      
      BUG=v8:1956
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2753793002
      Cr-Commit-Position: refs/heads/master@{#43867}
      7de21c4d
  19. 13 Mar, 2017 1 commit
  20. 07 Mar, 2017 1 commit
  21. 24 Feb, 2017 1 commit
  22. 23 Feb, 2017 1 commit
  23. 22 Feb, 2017 1 commit
  24. 17 Feb, 2017 1 commit
  25. 08 Feb, 2017 1 commit
  26. 25 Jan, 2017 1 commit
  27. 18 Jan, 2017 2 commits
  28. 05 Jan, 2017 1 commit
    • franzih's avatar
      [runtime] Collect IC feedback in DefineDataPropertyInLiteral. · 81736c71
      franzih authored
      Add a feedback vector slot for computed property names in object
      and class literals. Introduce new slot kind for storing
      computed property names.
      
      Change StaDataPropertyInLiteral to use the accumulator (again), so
      we don't exceed Bytecodes::kMaxOperands.
      
      We assume that most computed property names are
      symbols. Therefore we should see performance
      improvements, even if we deal with monomorphic ICs only.
      
      This CL only collects feedback but does not use
      it in Reduce() yet.
      
      BUG=v8:5624
      
      Review-Url: https://codereview.chromium.org/2587393006
      Cr-Commit-Position: refs/heads/master@{#42082}
      81736c71
  29. 02 Jan, 2017 1 commit
    • caitp's avatar
      [promises] port NewPromiseCapability to TF · 4f95a1eb
      caitp authored
      - Adds CodeAssembler::ConstructJS() to simplify calling JS functions as
      constructors, used by NewPromiseCapability()
      - Defines PromiseCapability as a special JSObject subclass, with a
      non-exensible Map, and read-only non-configurable DataDescriptors which
      point to its in-object fields. This allows its fields to be used by JS
      builtins until there is no longer any need.
      
      Currently, the performance benefit comes from
      https://codereview.chromium.org/2567033003/, but does not appear to
      regress performance in any significant way.
      
      BUG=v8:5343
      TBR=ulan@chromium.org
      
      Review-Url: https://codereview.chromium.org/2567333002
      Cr-Commit-Position: refs/heads/master@{#42014}
      4f95a1eb
  30. 28 Dec, 2016 1 commit