Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3114)

Unified Diff: src/debug/debug-scopes.h

Issue 1500933002: [debugger] fix debug-evaluate wrt shadowed context var. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: add TODO Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/debug/debug-scopes.h
diff --git a/src/debug/debug-scopes.h b/src/debug/debug-scopes.h
index 6e5c459037486f758529016c74b45483ab299280..d4e335a2a542a46f734b20f17b14cf63cb69992a 100644
--- a/src/debug/debug-scopes.h
+++ b/src/debug/debug-scopes.h
@@ -33,11 +33,15 @@ class ScopeIterator {
static const int kScopeDetailsNameIndex = 2;
static const int kScopeDetailsSize = 3;
+ enum Option { DEFAULT, IGNORE_NESTED_SCOPES, COLLECT_NON_LOCALS };
+
ScopeIterator(Isolate* isolate, FrameInspector* frame_inspector,
- bool ignore_nested_scopes = false);
+ Option options = DEFAULT);
ScopeIterator(Isolate* isolate, Handle<JSFunction> function);
+ ~ScopeIterator() { delete non_locals_; }
+
MUST_USE_RESULT MaybeHandle<JSObject> MaterializeScopeDetails();
// More scopes?
@@ -68,6 +72,11 @@ class ScopeIterator {
// be an actual context.
Handle<Context> CurrentContext();
+ // Populate the list with collected non-local variable names.
+ void GetNonLocals(List<Handle<String> >* list_out);
+
+ bool ThisIsNonLocal();
+
#ifdef DEBUG
// Debug print of the content of the current scope.
void DebugPrint();
@@ -78,6 +87,7 @@ class ScopeIterator {
FrameInspector* const frame_inspector_;
Handle<Context> context_;
List<Handle<ScopeInfo> > nested_scope_chain_;
+ HashMap* non_locals_;
bool seen_script_scope_;
bool failed_;
@@ -90,7 +100,17 @@ class ScopeIterator {
JSFunction::cast(frame_inspector_->GetFunction()));
}
- void RetrieveScopeChain(Scope* scope, Handle<SharedFunctionInfo> shared_info);
+ static bool InternalizedStringMatch(void* key1, void* key2) {
+ Handle<String> s1(reinterpret_cast<String**>(key1));
+ Handle<String> s2(reinterpret_cast<String**>(key2));
+ DCHECK(s1->IsInternalizedString());
+ DCHECK(s2->IsInternalizedString());
+ return s1.is_identical_to(s2);
+ }
+
+ void RetrieveScopeChain(Scope* scope);
+
+ void CollectNonLocals(Scope* scope);
MUST_USE_RESULT MaybeHandle<JSObject> MaterializeScriptScope();
MUST_USE_RESULT MaybeHandle<JSObject> MaterializeLocalScope();
« src/ast/scopes.h ('K') | « src/debug/debug-frames.cc ('k') | src/debug/debug-scopes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698