• Benedikt Meurer's avatar
    [ic] Ensure that we make progress on KeyedLoadIC polymorphic name. · d5c19aa9
    Benedikt Meurer authored
    In the special case of KeyedLoadIC, where the key that is passed in is a
    Name that is always the same we only checked for identity in both the
    stub and the TurboFan case, which works fine for symbols and internalized
    strings, but doesn't really work with non-internalized strings, where
    the identity check will fail, the runtime will internalize the string,
    and the IC will then see the original internalized string again and not
    progress in the feedback lattice. This leads to tricky deoptimization
    loops in TurboFan and constantly missing ICs.
    
    This adds fixes the stub to always try to internalize strings first
    when the identity check fails and then doing the check again. If the
    name is not found in the string table we miss, since in that case the
    string cannot match the previously recorded feedback name (which is
    always a unique name).
    
    In TurboFan we represent this checks with new CheckEqualsSymbol and
    CheckEqualsInternalizedString operators, which validate the previously
    recorded feedback, and the CheckEqualsInternalizedString operator does
    the attempt to internalize the input.
    
    Bug: v8:6936, v8:6948, v8:6969
    Change-Id: I3f3b4a587c67f00f7c4b60d239eb98a9626fe04a
    Reviewed-on: https://chromium-review.googlesource.com/730224Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#48784}
    d5c19aa9
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...