• Toon Verwaest's avatar
    Drop custom accessor deoptimization support · c82cd313
    Toon Verwaest authored
    Previously StaNamedProperty and StaKeyedProperty were in a weird state where
    they claimed to not touch the accumulator, but actually did in case they were
    deopted in the middle. A frame was added in the middle to overwrite the 
    accumulator again with the right value before returning from the setter, using
    a lot of complexity in the deoptimizer.
    
    This changes those instructions to be marked as writing to the accumulator
    (e.g., the result of the setter), and uses to manually store and reload into
    the accumulator the value being stored.
    
    If we want to avoid the additional bytecodes, we could make sure that bytecodes
    that claim to leave the accumulator alone don't deopt back to Advance/Dispatch
    but LoadAccumulatorWithValue/Advance/Dispatch. That's in a way similar to what
    happened before this CL, but I believe could be implemented much simpler.
    
    
    Bug: 
    Change-Id: I4850a690ef5a30976701d0e050951faa46fd1c18
    Reviewed-on: https://chromium-review.googlesource.com/753487Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Commit-Queue: Toon Verwaest <verwaest@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#49159}
    c82cd313
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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 Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm 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...
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...