1. 01 Jun, 2021 1 commit
  2. 30 Jun, 2017 1 commit
    • Mathias Bynens's avatar
      [elements] Rename FAST elements kinds · 26c00f4a
      Mathias Bynens authored
      The `FAST_` prefix doesn’t make much sense — they’re all just different cases
      with their own optimizations. Packedness being implicit (e.g. `FAST_ELEMENTS`
      vs. `FAST_HOLEY_ELEMENTS`) is not ideal, either.
      
      This patch renames the FAST elements kinds as follows:
      
      - e.g. FAST_ELEMENTS => PACKED_ELEMENTS
      - e.g. FAST_HOLEY_ELEMENTS => HOLEY_ELEMENTS
      
      The following exceptions are left intact, for lack of a better name:
      
      - FAST_SLOPPY_ARGUMENTS_ELEMENTS
      - SLOW_SLOPPY_ARGUMENTS_ELEMENTS
      - FAST_STRING_WRAPPER_ELEMENTS
      - SLOW_STRING_WRAPPER_ELEMENTS
      
      This makes it easier to reason about elements kinds, and less confusing to
      explain how they’re used.
      
      R=jkummerow@chromium.org, cbruni@chromium.org
      BUG=v8:6548
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ie7c6bee85583c3d84b730f7aebbd70c1efa38af9
      Reviewed-on: https://chromium-review.googlesource.com/556032Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46361}
      26c00f4a
  3. 19 Apr, 2017 1 commit
    • bmeurer's avatar
      [js-perf-test] Add microbenchmarks for materialized rest parameters. · 07e163bd
      bmeurer authored
      Functions that take mandatory parameters plus a number of optional
      parameters, that need to be materialized as an Array are quite common.
      The simplest possible case of this is essentially:
      
        function foo(mandatory, ...args) { return args; }
      
      Babel translates this to something like:
      
        function foo(mandatory) {
          "use strict";
          for (var _len = arguments.length,
                   args = Array(_len > 1 ? _len - 1 : 0),
                   _key = 1; _key < _len; _key++) {
            args[_key - 1] = arguments[_key];
          }
          return args;
        }
      
      The key to great performance here is to make sure that we don't
      materialize the (unmapped) arguments object in this case, plus that we
      have some kind of fast-path for the Array constructor and the
      initialization loop.
      
      This microbenchmark ensures that we have decent performance even in the
      case where the assignment to args is polymorphic, i.e. the arguments
      have seen different elements kinds, starting with FAST_HOLEY_ELEMENTS
      and then FAST_HOLEY_SMI_ELEMENTS.
      
      R=yangguo@chromium.org
      BUG=v8:6262
      
      Review-Url: https://codereview.chromium.org/2823343004
      Cr-Commit-Position: refs/heads/master@{#44709}
      07e163bd
  4. 10 Sep, 2015 1 commit
  5. 08 Sep, 2015 1 commit