• jarin's avatar
    Do not touch a binary op IC target in code object marked for lazy deopt. · bb13e7f7
    jarin authored
    Bad scenario:
    
    - Enter a binop IC miss handler from optimized code object C from call
      site S,
    
    - From the binop IC, invoke arbitrary javascript that lazy deopts C,
      so all relocation info is nuked and replaced with lazy deopt entries'
      reloc info. In particular, there is no reloc info for S.
    
    - Still from the arbitrary JavaScript, make IC target's code object move.
      Note that the call site S is not updated.
    
    - Return to the miss handler and inspect the IC's target. This will try
      to get the target from S, but that is a potentially invalid pointer.
    
    It is quite possible that we will have to do a similar fix for other ICs,
    but we will have to find a reliable repro first. I am not submitting a
    repro here because it is quite long running and brittle (it
    relies on code compaction happening while in the binop IC).
    
    BUG=v8:3910
    LOG=n
    R=ishell@chromium.org
    
    Review URL: https://codereview.chromium.org/958473004
    
    Cr-Commit-Position: refs/heads/master@{#26872}
    bb13e7f7
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
include 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...