• Benedikt Meurer's avatar
    [inspector] Consistently treat promise rejections as side-effecting. · 0195a5eb
    Benedikt Meurer authored
    Previously we'd treat %_AsyncFunctionReject (and %AsyncFunctionReject)
    as side-effect free (in async functions), but that's not correct, since
    promise rejections have side-effects (at the very least triggering the
    unhandled promise rejection machinery in the browser).
    
    This required a minor refactoring as previously we'd classify functions
    as side-effecting or not depending on whether they contain any calls to
    side-effecting intrinsics, no matter whether this call is actually
    executed or not. That would break REPL mode however if we'd generally
    treat all async functions with %_AsyncFunctionReject intrinsic calls as
    side-effecting, so instead of performing the intrinsic checks ahead of
    time, we now perform the test at execution time.
    
    Before: https://imgur.com/5BvJP9d.png
    After: https://imgur.com/10FanNr.png
    Fixed: chromium:1249275
    Change-Id: Ib06f945ba21f1e06ee9b13a1363fad342464fd9a
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3197712
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Commit-Queue: Simon Zünd <szuend@chromium.org>
    Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#77183}
    0195a5eb
side-effect-free-debug-evaluate-expected.txt 714 Bytes