1. 11 Sep, 2017 1 commit
    • Benedikt Meurer's avatar
      [builtins] Add fast-path for JSTypedArray to CreateListFromArrayLike. · f31bae03
      Benedikt Meurer authored
      It's quite common today to use Function#apply together with typed
      arrays, for example to construct a String from character codes (or code
      points) within a Uint8Array or Uint16Array, i.e.
      
        String.fromCharCode.apply(undefined, uint8array)
      
      is seen quite often on the web. But there are other interesting cases
      like
      
        Math.max.apply(undefined, float64array)
      
      to compute the maximum value in a Float64Array, which is definitely not
      the fastest implementation, but quite convenient and readable.
      Unfortunately these cases hit the super-slow-path of the Function#apply
      machinery in V8 currently, because Function#apply doesn't have any
      fast-path for TypedArrays.
      
      This CL adds a proper fast-path to CreateListFromArrayLike to the
      ElementsAccessor, which can be used as long as the typed array that's
      passed wasn't neutered. With this fast-path in place, the performance on
      the micro-benchmark mentioned in the issue improves from
      
        stringFromCharCode: 6386 ms.
        stringFromCodePoint: 8752 ms.
      
      to
      
        stringFromCharCode: 1932 ms.
        stringFromCodePoint: 4262 ms.
      
      which corresponds to a 2.0x-3.3x improvement.
      
      Bug: v8:2435
      Change-Id: I4d39666e53644b11d5856982b005928e26f296fe
      Reviewed-on: https://chromium-review.googlesource.com/657405Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47936}
      f31bae03