• 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
Name
Last commit
Last update
..
console Loading commit data...
cpu-profiler Loading commit data...
debugger Loading commit data...
heap-profiler Loading commit data...
regress Loading commit data...
runtime Loading commit data...
sessions Loading commit data...
type-profiler Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
OWNERS Loading commit data...
frontend-channel.h Loading commit data...
inspector-test.cc Loading commit data...
inspector.status Loading commit data...
isolate-data.cc Loading commit data...
isolate-data.h Loading commit data...
json-parse-expected.txt Loading commit data...
json-parse.js Loading commit data...
print-method-not-found-expected.txt Loading commit data...
print-method-not-found.js Loading commit data...
protocol-test.js Loading commit data...
task-runner.cc Loading commit data...
task-runner.h Loading commit data...
tasks.cc Loading commit data...
tasks.h Loading commit data...
testcfg.py Loading commit data...
utils.cc Loading commit data...
utils.h Loading commit data...
wasm-inspector-test.js Loading commit data...