• 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
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
fuzzer Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mkgrokdump Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
wasm-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.gyp Loading commit data...
perf.isolate Loading commit data...