• 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
external-reference.h 19.2 KB