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

Side by Side Diff: src/debug/debug-scopes.h

Issue 1834633003: [debugger] allow debug-evaluate to change stack and context values. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: address comments Created 4 years, 8 months 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 unified diff | Download patch
« no previous file with comments | « src/debug/debug-evaluate.cc ('k') | src/debug/debug-scopes.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_DEBUG_DEBUG_SCOPES_H_ 5 #ifndef V8_DEBUG_DEBUG_SCOPES_H_
6 #define V8_DEBUG_DEBUG_SCOPES_H_ 6 #define V8_DEBUG_DEBUG_SCOPES_H_
7 7
8 #include "src/debug/debug-frames.h" 8 #include "src/debug/debug-frames.h"
9 #include "src/frames.h" 9 #include "src/frames.h"
10 10
(...skipping 25 matching lines...) Expand all
36 static const int kScopeDetailsFunctionIndex = 5; 36 static const int kScopeDetailsFunctionIndex = 5;
37 static const int kScopeDetailsSize = 6; 37 static const int kScopeDetailsSize = 6;
38 38
39 enum Option { DEFAULT, IGNORE_NESTED_SCOPES, COLLECT_NON_LOCALS }; 39 enum Option { DEFAULT, IGNORE_NESTED_SCOPES, COLLECT_NON_LOCALS };
40 40
41 ScopeIterator(Isolate* isolate, FrameInspector* frame_inspector, 41 ScopeIterator(Isolate* isolate, FrameInspector* frame_inspector,
42 Option options = DEFAULT); 42 Option options = DEFAULT);
43 43
44 ScopeIterator(Isolate* isolate, Handle<JSFunction> function); 44 ScopeIterator(Isolate* isolate, Handle<JSFunction> function);
45 45
46 ~ScopeIterator() { delete non_locals_; }
47
48 MUST_USE_RESULT MaybeHandle<JSObject> MaterializeScopeDetails(); 46 MUST_USE_RESULT MaybeHandle<JSObject> MaterializeScopeDetails();
49 47
50 // More scopes? 48 // More scopes?
51 bool Done() { 49 bool Done() {
52 DCHECK(!failed_); 50 DCHECK(!failed_);
53 return context_.is_null(); 51 return context_.is_null();
54 } 52 }
55 53
56 bool Failed() { return failed_; } 54 bool Failed() { return failed_; }
57 55
(...skipping 10 matching lines...) Expand all
68 66
69 // Set variable value and return true on success. 67 // Set variable value and return true on success.
70 bool SetVariableValue(Handle<String> variable_name, Handle<Object> new_value); 68 bool SetVariableValue(Handle<String> variable_name, Handle<Object> new_value);
71 69
72 Handle<ScopeInfo> CurrentScopeInfo(); 70 Handle<ScopeInfo> CurrentScopeInfo();
73 71
74 // Return the context for this scope. For the local context there might not 72 // Return the context for this scope. For the local context there might not
75 // be an actual context. 73 // be an actual context.
76 Handle<Context> CurrentContext(); 74 Handle<Context> CurrentContext();
77 75
78 // Populate the list with collected non-local variable names. 76 // Populate the set with collected non-local variable names.
79 void GetNonLocals(List<Handle<String> >* list_out); 77 Handle<StringSet> GetNonLocals();
80
81 bool ThisIsNonLocal();
82 78
83 #ifdef DEBUG 79 #ifdef DEBUG
84 // Debug print of the content of the current scope. 80 // Debug print of the content of the current scope.
85 void DebugPrint(); 81 void DebugPrint();
86 #endif 82 #endif
87 83
88 private: 84 private:
89 struct ExtendedScopeInfo { 85 struct ExtendedScopeInfo {
90 ExtendedScopeInfo(Handle<ScopeInfo> info, int start, int end) 86 ExtendedScopeInfo(Handle<ScopeInfo> info, int start, int end)
91 : scope_info(info), start_position(start), end_position(end) {} 87 : scope_info(info), start_position(start), end_position(end) {}
92 Handle<ScopeInfo> scope_info; 88 Handle<ScopeInfo> scope_info;
93 int start_position; 89 int start_position;
94 int end_position; 90 int end_position;
95 }; 91 };
96 92
97 Isolate* isolate_; 93 Isolate* isolate_;
98 FrameInspector* const frame_inspector_; 94 FrameInspector* const frame_inspector_;
99 Handle<Context> context_; 95 Handle<Context> context_;
100 List<ExtendedScopeInfo> nested_scope_chain_; 96 List<ExtendedScopeInfo> nested_scope_chain_;
101 HashMap* non_locals_; 97 Handle<StringSet> non_locals_;
102 bool seen_script_scope_; 98 bool seen_script_scope_;
103 bool failed_; 99 bool failed_;
104 100
105 inline JavaScriptFrame* GetFrame() { 101 inline JavaScriptFrame* GetFrame() {
106 return frame_inspector_->GetArgumentsFrame(); 102 return frame_inspector_->GetArgumentsFrame();
107 } 103 }
108 104
109 inline Handle<JSFunction> GetFunction() { 105 inline Handle<JSFunction> GetFunction() {
110 return Handle<JSFunction>::cast(frame_inspector_->GetFunction()); 106 return Handle<JSFunction>::cast(frame_inspector_->GetFunction());
111 } 107 }
112 108
113 static bool InternalizedStringMatch(void* key1, void* key2) {
114 Handle<String> s1(reinterpret_cast<String**>(key1));
115 Handle<String> s2(reinterpret_cast<String**>(key2));
116 DCHECK(s1->IsInternalizedString());
117 DCHECK(s2->IsInternalizedString());
118 return s1.is_identical_to(s2);
119 }
120
121 void RetrieveScopeChain(Scope* scope); 109 void RetrieveScopeChain(Scope* scope);
122 110
123 void CollectNonLocals(Scope* scope); 111 void CollectNonLocals(Scope* scope);
124 112
125 MUST_USE_RESULT MaybeHandle<JSObject> MaterializeScriptScope(); 113 MUST_USE_RESULT MaybeHandle<JSObject> MaterializeScriptScope();
126 MUST_USE_RESULT MaybeHandle<JSObject> MaterializeLocalScope(); 114 MUST_USE_RESULT MaybeHandle<JSObject> MaterializeLocalScope();
127 MUST_USE_RESULT MaybeHandle<JSObject> MaterializeModuleScope(); 115 MUST_USE_RESULT MaybeHandle<JSObject> MaterializeModuleScope();
128 Handle<JSObject> MaterializeClosure(); 116 Handle<JSObject> MaterializeClosure();
129 Handle<JSObject> MaterializeCatchScope(); 117 Handle<JSObject> MaterializeCatchScope();
130 Handle<JSObject> MaterializeBlockScope(); 118 Handle<JSObject> MaterializeBlockScope();
(...skipping 27 matching lines...) Expand all
158 void GetNestedScopeChain(Isolate* isolate, Scope* scope, 146 void GetNestedScopeChain(Isolate* isolate, Scope* scope,
159 int statement_position); 147 int statement_position);
160 148
161 DISALLOW_IMPLICIT_CONSTRUCTORS(ScopeIterator); 149 DISALLOW_IMPLICIT_CONSTRUCTORS(ScopeIterator);
162 }; 150 };
163 151
164 } // namespace internal 152 } // namespace internal
165 } // namespace v8 153 } // namespace v8
166 154
167 #endif // V8_DEBUG_DEBUG_SCOPES_H_ 155 #endif // V8_DEBUG_DEBUG_SCOPES_H_
OLDNEW
« no previous file with comments | « src/debug/debug-evaluate.cc ('k') | src/debug/debug-scopes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698