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

Side by Side Diff: src/inspector/v8-debugger-script.cc

Issue 2728563002: [inspector] added type of break location into getPossibleBreakpoints output (Closed)
Patch Set: moved filtering Created 3 years, 9 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/inspector/v8-debugger-script.h ('k') | src/wasm/wasm-objects.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #include "src/inspector/v8-debugger-script.h" 5 #include "src/inspector/v8-debugger-script.h"
6 6
7 #include "src/inspector/inspected-context.h" 7 #include "src/inspector/inspected-context.h"
8 #include "src/inspector/string-util.h" 8 #include "src/inspector/string-util.h"
9 #include "src/inspector/wasm-translation.h" 9 #include "src/inspector/wasm-translation.h"
10 10
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 return m_sourceMappingURL; 148 return m_sourceMappingURL;
149 } 149 }
150 150
151 void setSourceMappingURL(const String16& sourceMappingURL) override { 151 void setSourceMappingURL(const String16& sourceMappingURL) override {
152 m_sourceMappingURL = sourceMappingURL; 152 m_sourceMappingURL = sourceMappingURL;
153 } 153 }
154 154
155 bool getPossibleBreakpoints( 155 bool getPossibleBreakpoints(
156 const v8::debug::Location& start, const v8::debug::Location& end, 156 const v8::debug::Location& start, const v8::debug::Location& end,
157 bool restrictToFunction, 157 bool restrictToFunction,
158 std::vector<v8::debug::Location>* locations) override { 158 std::vector<v8::debug::BreakLocation>* locations) override {
159 v8::HandleScope scope(m_isolate); 159 v8::HandleScope scope(m_isolate);
160 v8::Local<v8::debug::Script> script = m_script.Get(m_isolate); 160 v8::Local<v8::debug::Script> script = m_script.Get(m_isolate);
161 return script->GetPossibleBreakpoints(start, end, restrictToFunction, 161 std::vector<v8::debug::BreakLocation> allLocations;
162 locations); 162 if (!script->GetPossibleBreakpoints(start, end, restrictToFunction,
163 &allLocations)) {
164 return false;
165 }
166 if (!allLocations.size()) return true;
167 v8::debug::BreakLocation current = allLocations[0];
168 for (size_t i = 1; i < allLocations.size(); ++i) {
169 if (allLocations[i].GetLineNumber() == current.GetLineNumber() &&
170 allLocations[i].GetColumnNumber() == current.GetColumnNumber()) {
171 if (allLocations[i].type() != v8::debug::kCommonBreakLocation) {
172 // debugger can returns more then one break location at the same
173 // source location, e.g. foo() - in this case there are two break
174 // locations before foo: for statement and for function call, we can
175 // merge them for inspector and report only one with call type.
176 current = allLocations[i];
Yang 2017/03/06 14:41:11 Can we DCHECK that we only overwrite a common brea
kozy 2017/03/06 18:25:25 I added DCHECK and it was failed on generator func
177 }
178 } else {
179 // we assume that returned break locations are sorted.
180 DCHECK(
181 allLocations[i].GetLineNumber() > current.GetLineNumber() ||
182 (allLocations[i].GetColumnNumber() >= current.GetColumnNumber() &&
183 allLocations[i].GetLineNumber() == current.GetLineNumber()));
184 locations->push_back(current);
185 current = allLocations[i];
186 }
187 }
188 locations->push_back(current);
189 return true;
163 } 190 }
164 191
165 void resetBlackboxedStateCache() override { 192 void resetBlackboxedStateCache() override {
166 v8::HandleScope scope(m_isolate); 193 v8::HandleScope scope(m_isolate);
167 v8::debug::ResetBlackboxedStateCache(m_isolate, m_script.Get(m_isolate)); 194 v8::debug::ResetBlackboxedStateCache(m_isolate, m_script.Get(m_isolate));
168 } 195 }
169 196
170 int offset(int lineNumber, int columnNumber) const override { 197 int offset(int lineNumber, int columnNumber) const override {
171 v8::HandleScope scope(m_isolate); 198 v8::HandleScope scope(m_isolate);
172 return m_script.Get(m_isolate)->GetSourceOffset( 199 return m_script.Get(m_isolate)->GetSourceOffset(
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 } 243 }
217 244
218 const String16& sourceMappingURL() const override { return emptyString(); } 245 const String16& sourceMappingURL() const override { return emptyString(); }
219 bool isLiveEdit() const override { return false; } 246 bool isLiveEdit() const override { return false; }
220 bool isModule() const override { return false; } 247 bool isModule() const override { return false; }
221 void setSourceMappingURL(const String16&) override {} 248 void setSourceMappingURL(const String16&) override {}
222 249
223 bool getPossibleBreakpoints( 250 bool getPossibleBreakpoints(
224 const v8::debug::Location& start, const v8::debug::Location& end, 251 const v8::debug::Location& start, const v8::debug::Location& end,
225 bool restrictToFunction, 252 bool restrictToFunction,
226 std::vector<v8::debug::Location>* locations) override { 253 std::vector<v8::debug::BreakLocation>* locations) override {
227 v8::HandleScope scope(m_isolate); 254 v8::HandleScope scope(m_isolate);
228 v8::Local<v8::debug::Script> script = m_script.Get(m_isolate); 255 v8::Local<v8::debug::Script> script = m_script.Get(m_isolate);
229 String16 v8ScriptId = String16::fromInteger(script->Id()); 256 String16 v8ScriptId = String16::fromInteger(script->Id());
230 257
231 v8::debug::Location translatedStart = start; 258 v8::debug::Location translatedStart = start;
232 TranslateProtocolLocationToV8Location(m_wasmTranslation, &translatedStart, 259 TranslateProtocolLocationToV8Location(m_wasmTranslation, &translatedStart,
233 scriptId(), v8ScriptId); 260 scriptId(), v8ScriptId);
234 261
235 v8::debug::Location translatedEnd = end; 262 v8::debug::Location translatedEnd = end;
236 if (translatedEnd.IsEmpty()) { 263 if (translatedEnd.IsEmpty()) {
237 // Stop before the start of the next function. 264 // Stop before the start of the next function.
238 translatedEnd = 265 translatedEnd =
239 v8::debug::Location(translatedStart.GetLineNumber() + 1, 0); 266 v8::debug::Location(translatedStart.GetLineNumber() + 1, 0);
240 } else { 267 } else {
241 TranslateProtocolLocationToV8Location(m_wasmTranslation, &translatedEnd, 268 TranslateProtocolLocationToV8Location(m_wasmTranslation, &translatedEnd,
242 scriptId(), v8ScriptId); 269 scriptId(), v8ScriptId);
243 } 270 }
244 271
245 bool success = script->GetPossibleBreakpoints( 272 bool success = script->GetPossibleBreakpoints(
246 translatedStart, translatedEnd, restrictToFunction, locations); 273 translatedStart, translatedEnd, restrictToFunction, locations);
247 for (v8::debug::Location& loc : *locations) { 274 for (v8::debug::BreakLocation& loc : *locations) {
248 TranslateV8LocationToProtocolLocation(m_wasmTranslation, &loc, v8ScriptId, 275 TranslateV8LocationToProtocolLocation(m_wasmTranslation, &loc, v8ScriptId,
249 scriptId()); 276 scriptId());
250 } 277 }
251 return success; 278 return success;
252 } 279 }
253 280
254 void resetBlackboxedStateCache() override {} 281 void resetBlackboxedStateCache() override {}
255 282
256 int offset(int lineNumber, int columnNumber) const override { 283 int offset(int lineNumber, int columnNumber) const override {
257 return kNoOffset; 284 return kNoOffset;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 if (m_hash.isEmpty()) m_hash = calculateHash(source()); 330 if (m_hash.isEmpty()) m_hash = calculateHash(source());
304 DCHECK(!m_hash.isEmpty()); 331 DCHECK(!m_hash.isEmpty());
305 return m_hash; 332 return m_hash;
306 } 333 }
307 334
308 void V8DebuggerScript::setSourceURL(const String16& sourceURL) { 335 void V8DebuggerScript::setSourceURL(const String16& sourceURL) {
309 m_sourceURL = sourceURL; 336 m_sourceURL = sourceURL;
310 } 337 }
311 338
312 } // namespace v8_inspector 339 } // namespace v8_inspector
OLDNEW
« no previous file with comments | « src/inspector/v8-debugger-script.h ('k') | src/wasm/wasm-objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698