• Jaroslav Sevcik's avatar
    [turbofan] Make the return value explicit in the deoptimization info. · 125d764e
    Jaroslav Sevcik authored
    With this change, the return value is not baked into the translations
    for lazy deoptimization point. Instead, the translation contains
    a position where the return value(s) should be written by
    the deoptimizer. The deoptimizer then constructs the frame as it
    would look before and during the call and then overwrites the relevant
    slot(s) with the return value(s) from the callee.
    
    The advantage is that we do not run the risk of overwriting captured
    objects in the tranlations. Moreover, the translations correctly reflect
    the frame during the call (e.g., if it is inspected by the debugger or
    if an exception is thrown and no value is returned).
    
    Bug: chromium:902608
    Change-Id: I03824f0efec3dd476feacbcc0ab6102c3e6c94bf
    Reviewed-on: https://chromium-review.googlesource.com/c/1329203
    Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
    Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#57446}
    125d764e
deoptimizer.cc 149 KB