• bmeurer's avatar
    [compiler] Properly guard the speculative optimizations for instanceof. · a0484bc6
    bmeurer authored
    Add a general feedback slot for instanceof similar to what we already have
    for for-in, which basically has a fast (indicated by the uninitialized
    sentinel) and a slow (indicated by the megamorphic sentinel) mode. Now
    we can only take the fast path when the feedback slot says it hasn't
    seen any funky inputs and nothing funky appeared in the prototype chain.
    In the TurboFan code we also deoptimize whenever we see a funky object
    (i.e. a proxy or an object that requires access checks) in the prototype
    chain (similar to what Crankshaft already did).
    
    Drive-by-fix: Also make Crankshaft respect the mode and therefore
    address the deopt loop in Crankshaft around instanceof.
    
    We might want to introduce an InstanceOfIC mechanism at some point and
    track the map of the right-hand side.
    
    BUG=v8:5267
    R=mvstanton@chromium.org
    
    Review-Url: https://codereview.chromium.org/2370693002
    Cr-Commit-Position: refs/heads/master@{#39718}
    a0484bc6
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
fuzzer Loading commit data...
inspector_protocol_parser_test 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...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests 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...