• peterwmwong's avatar
    [builtins]: Optimize CreateTypedArray to use element size log 2 for calculations. · c9ef0405
    peterwmwong authored
    TypedArrayElementsInfo now represents an element's size as a log 2 and typed as
    uintptr.  This simplifies and speeds up (avoids possible HeapNumber allocations) a
    number of calculations:
    
      - Number of Elements (length) -> Byte Length - is now a WordShl
      - Byte Length -> Number of Elements (length) - is now a WordShr
      - Testing alignment (byte offset or length)  - is now a WordAnd
    
    These element/byte length related calculations are encapsulated in
    TypedArrayElementsInfo as struct methods.
    
    This reduces the size of CreateTypedArray by 2.125 KB (24%) on Mac x64.release:
      - Before: 9,088
      - After:  6,896
    
    This improves the performance of the following microbencmarks
      - TypedArrays-ConstructWithBuffer: ~87%
      - TypedArrays-SubarrayNoSpecies:   ~28%
    
    Bug: v8:7161
    Change-Id: I2239fd0e0af9d3ad55cd52318088d3c7c913ae44
    Reviewed-on: https://chromium-review.googlesource.com/c/1456299
    Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#59531}
    c9ef0405
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...