• Benedikt Meurer's avatar
    [turbofan] Consistently use the StringLength operator. · 60d3f89d
    Benedikt Meurer authored
    Previously all internal accesses to the String::length field in TurboFan
    would use the StringLength operator, whereas explicit `string.length`
    accesses from user JavaScript code would use LoadField operators instead.
    This inconsistency led to redundant loads of the String::length, for
    example in case of code like
    
    ```js
    subject.substring(1, subject.length - 1)
    ```
    
    where the `subject.substring` call introduces a StringLength(subject)
    node, and the `subject.length` introduces a LoadField[length](subject)
    node.
    
    Consistently using StringLength operator everywhere enables
    optimizations in TurboFan that had been blocked before here (besides
    avoiding the redundant load operations).
    
    Bug: v8:8015
    Change-Id: I21c82bc418105b9933a9e60dde11c7b222dfcf4f
    Reviewed-on: https://chromium-review.googlesource.com/1212942
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#55710}
    60d3f89d
access-info.cc 28.5 KB