1. 11 Sep, 2019 1 commit
    • 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