• Simon Zünd's avatar
    Change debug-evaluate from a whitelist to a blacklist approach · 2e11dff7
    Simon Zünd authored
    This CL changes how variables are resolved during debug evaluate.
    We now re-parse the whole script when creating a ScopeIterator.
    This gives us accurate scope information for all parent scopes of the
    closure in which we stopped. Using this information, we build
    blacklists of stack-allocated variables. Each context on the chain
    in between the closure context up to the original native context is
    wrapped in a debug-evaluate context with such a blacklist attached.
    Variable lookup for debug-evalute contexts then works as follows:
    
      1) Look up in the materialized stack variables (stayed the same).
      2) Check the blacklist to find out whether to abort further lookup.
      3) Look up in the original context.
    
    Steps 1-3 is repeated for each debug-evaluate context, since they
    mirror the original context chain.
    
    R=ulan@chromium.org, yangguo@chromium.org
    
    Change-Id: Ied8e5786772c70566da9627ee3b7eff066fba2b4
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1795354Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Commit-Queue: Simon Zünd <szuend@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#63666}
    2e11dff7
debug-scopes.cc 36.8 KB