1. 05 Mar, 2018 2 commits
    • Benedikt Meurer's avatar
      [es2015] Refactor the JSArrayIterator. · 06ee127b
      Benedikt Meurer authored
      This changes the JSArrayIterator to always have only a single instance
      type, instead of the zoo of instance types that we had before, and
      which became less useful with the specification update to when "next"
      is loaded from the iterator now. This greatly simplifies the baseline
      implementation of the array iterator, which now only looks at the
      iterated object during %ArrayIteratorPrototype%.next invocations.
      
      In TurboFan we introduce a new JSCreateArrayIterator operator, that
      holds the IterationKind and get's the iterated object as input. When
      optimizing %ArrayIteratorPrototype%.next in the JSCallReducer, we
      check whether the receiver is a JSCreateArrayIterator, and if so,
      we try to infer maps for the iterated object from there. If we find
      any, we speculatively assume that these won't have changed during
      iteration (as we did before with the previous approach), and generate
      fast code for both JSArray and JSTypedArray iteration.
      
      Drive-by-fix: Drop the fast_array_iteration protector, it's not
      necessary anymore since we have the deoptimization guard bit in
      the JSCallReducer now.
      
      This addresses the performance cliff noticed in webpack 4. The minimal
      repro on the tracking bug goes from
      
        console.timeEnd: mono, 124.773000
        console.timeEnd: poly, 670.353000
      
      to
      
        console.timeEnd: mono, 118.709000
        console.timeEnd: poly, 141.393000
      
      so that's a 4.7x improvement.
      
      Also make presubmit happy by adding the missing #undef's.
      
      Bug: v8:7510, v7:7514
      Change-Id: I79a46bfa2cd0f0710e09365ef72519b1bbb667b5
      Reviewed-on: https://chromium-review.googlesource.com/946098Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51725}
      06ee127b
    • jgruber's avatar
      [builtins] Enable embedded builtins and add testing variants · abcc28ce
      jgruber authored
      This enables the v8_enable_embedded_builtins gn flag on non-ia32 builds
      and adds a new --stress-off-heap-code test mode to fyi bots.
      
      v8_enable_embedded_builtins=true changes accesses to constants and
      external references to go through the root list in builtins code.
      
      --stress-off-heap-code copies builtins code off-heap on isolate
      creation.
      
      A few drive-by-fixes:
      - ensure that we actually inspect the correct builtin during
        isolate-independence testing.
      - relax tests to decrease maintenance (now we only fail if a builtin
        should be isolate-independent but isn't).
      - switch to a different off-heap-trampoline register on arm due to
        conflicts with custom stub linkages.
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
      Bug: v8:6666
      Change-Id: I09ad3c75cb4342f4c548ea780f275993730896c8
      Reviewed-on: https://chromium-review.googlesource.com/934281
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Hablich <hablich@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51717}
      abcc28ce
  2. 02 Mar, 2018 6 commits
  3. 01 Mar, 2018 3 commits
  4. 27 Feb, 2018 1 commit
  5. 24 Feb, 2018 3 commits
  6. 23 Feb, 2018 3 commits
  7. 22 Feb, 2018 3 commits
  8. 21 Feb, 2018 3 commits
  9. 20 Feb, 2018 1 commit
    • Michael Achenbach's avatar
      [test] Abort testing immediately on interrupt and sigterm · 4a2d9b1b
      Michael Achenbach authored
      This is a partial revert of:
      https://crrev.com/c/890938 and https://crrev.com/c/893982
      
      Before this CL, the test runner blocked on ongoing tests in order to
      process their results after an internal timeout. However, the logic
      required for this feature was overly complicated and prevented an
      acceptable implementation for fast aborts. Furthermore, also the fuzzers
      suffered from timeouts on swarming due to hanging tests.
      
      Instead, we now abort immediately on internal timeout (used on
      fuzzers), SIGINT (Ctrl-C) and SIGTERM. Ongoing tests are immediately
      terminated and their results are disregarded. On SIGTERM and SIGINT,
      we return with non-zero exit codes, and zero on internal timeout.
      
      This will also properly return json output, when the external hard
      timeout is reached on swarming (causes SIGTERM).
      
      TBR=sergiyb@chromium.org
      
      Bug: v8:7423, chromium:813065
      Change-Id: Ib20f835f58a0970693bdd3b21dc5d766d8e115d8
      Reviewed-on: https://chromium-review.googlesource.com/924852Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51399}
      4a2d9b1b
  10. 19 Feb, 2018 2 commits
  11. 17 Feb, 2018 3 commits
  12. 16 Feb, 2018 5 commits
  13. 15 Feb, 2018 5 commits