07cc86889c
This CL implements the heavy lifting for re-using block lists: - On local debug-evaluate, we check if the paused function already has a block list. If not, we do a full re-parse, calculate the block lists and stash them in the global map. - On a context lookup, we do the lookup slightly differently. The block lists now store "outer" locals, so we need to check the block list before we advance to the next context, not before we do the lookup in the current context. The CL also duplicates the debugger test that checks most of these shadowing edge cases. While we keep working on the new feature we still want to check both configurations, but the feature is too small to warrant a separate bot. Note that the file with the flag enabled has one additional test case that fails with the old implementation. Unfortunately it's non-trivial to fix in the old implementation. This CL drastically improves performance for conditional breakpoints as they use local debug-evaluate under the hood. The worst case example (https://crbug.com/1072939#c15) improves from 6.5 seconds to 100ms. R=jarin@chromium.org Bug: chromium:1363561 Change-Id: I85f3d908d246f0d2e31ed272f4db6a852b9dbc39 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3941584 Commit-Queue: Simon Zünd <szuend@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#83665} |
||
---|---|---|
.. | ||
bugs | ||
debug | ||
protocol | ||
regress | ||
wrapper | ||
BUILD.gn | ||
debugger.status | ||
OWNERS | ||
test-api.js | ||
testcfg.py |