• Benedikt Meurer's avatar
    [turbofan] Collect and use SignedSmall input feedback for Divide. · 622852e5
    Benedikt Meurer authored
    For Divide operations like
    
      r = a / b
    
    where r has only truncated uses (i.e. only used in bitwise operations),
    we used to generate a Float64Div unless we statically knew something
    about a and b, even if a and b have always been integers so far.
    Crankshaft was able to generate an integer division here, because
    Fullcodegen collected feedback independently for inputs and outputs of
    binary operations.
    
    This adds new BinaryOperationFeedback::kSignedSmallInputs, which is used
    specifically for Divide to state that we have seen only SignedSmall
    inputs thus far, but the outputs weren't always in the SignedSmall
    range.
    
    The issue was discovered in a WebGL Triangulation library and reported
    via https://twitter.com/mourner/status/895708603117518848 after Node
    8.3.0 was released with I+TF.
    
    R=jarin@chromium.org
    
    Bug: v8:6698
    Change-Id: I830e421a3bf91fc8fa3665cbb706bc13675a6d2b
    Reviewed-on: https://chromium-review.googlesource.com/612063
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#47302}
    622852e5
js-operator.cc 46.3 KB