• Benedikt Meurer's avatar
    [inspector] Properly catch side effecting iterators. · cb08942d
    Benedikt Meurer authored
    Array spread syntax `[...obj]` is compiled to a special bytecode that
    tries to take fast-paths for values special kinds of `obj`s, including
    Set, Map, and Array iterator instances. But these fast-paths skip the
    side-effect checks of `Runtime.evaluate` and friends, and thus lead to
    surprises for developers.
    
    This CL alters the behavior to always call the `next()` builtins when
    the debugger is active to make sure we catch the side effects correctly.
    
    Fixed: chromium:1255896
    Change-Id: If3fc48a119cfa791c4fde7b5c586acc22dd973e7
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226329
    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@{#77409}
    cb08942d
side-effect-free-debug-evaluate.js 3.69 KB