• Benedikt Meurer's avatar
    [turbofan] Speculate on bounds checks for String#charAt and String#charCodeAt. · db129b65
    Benedikt Meurer authored
    With the new builtin optimization guard we can just speculatively assume
    that the index passed to String#charAt and String#charCodeAt (in optimized
    code) is going to be within the valid range for the receiver. This is
    what Crankshaft used to do, and it avoids Smi checks on the result for
    String#charCodeAt, since it can no longer return NaN.
    
    This gives rise to further optimizations of these builtins (i.e. to
    completely avoid the tagging of char codes), and by itself already
    improves the regression test originally reported from 650ms to
    610ms.
    
    Bug: v8:7127, v8:7326
    Change-Id: Ia25a555c5c1a48d229c094b1ecd2487eec81e390
    Reviewed-on: https://chromium-review.googlesource.com/872850Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#50667}
    db129b65
js-call-reducer.cc 175 KB