• 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
deoptimizer.h 31.6 KB