• bmeurer's avatar
    [turbofan] Introduce simplified NumberBitwise{Or,Xor,And} operators. · d08f9045
    bmeurer authored
    Currently we still (mis)used some machine operators in typed lowering
    (namely Word32Or, Word32Xor and Word32And). But these operators are
    "polymorphic" in the signedness of their inputs and output, hence the
    representation selection (and thereby simplified lowering) was unable to
    figure out whether a bitwise operation that was seen would produce an
    unsigned or a signed result. If such nodes also have frame state uses,
    the only safe choice was float64, which was not only a lot less ideal,
    but also the main cause of the for-in related deoptimizer loops.
    
    Adding dedicated NumberBitwiseOr, NumberBitwiseAnd and NumberBitwiseXor
    simplified operators not only gives us precise (and correct) typing for
    the bitwise operations, but also allows us to actually verify the graph
    properly after typed lowering.
    
    Drive-by-fix: Remove the double-to-smi magic from the Deoptimizer, which
    is responsible for various deopt-loops in TurboFan, and is no longer
    needed with the addition of the NumberBitwise operators.
    
    R=jarin@chromium.org
    
    Review URL: https://codereview.chromium.org/1422213002
    
    Cr-Commit-Position: refs/heads/master@{#31594}
    d08f9045
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
docs Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
Makefile.nacl Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...