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

Unified Diff: src/inspector/v8-debugger.cc

Issue 2685163006: [inspector] migrate set/remove BreakPoint to debug-interface.h (Closed)
Patch Set: added comment about inlined jsframe index Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/inspector/v8-debugger.h ('k') | src/inspector/v8-debugger-agent-impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/inspector/v8-debugger.cc
diff --git a/src/inspector/v8-debugger.cc b/src/inspector/v8-debugger.cc
index 3a2fc89f0039869b49a3c5cef4f4b92eab0017a6..85129338e6acccea4e99cca931082a4ccd84403a 100644
--- a/src/inspector/v8-debugger.cc
+++ b/src/inspector/v8-debugger.cc
@@ -190,7 +190,6 @@ void V8Debugger::enable() {
void V8Debugger::disable() {
if (--m_enableCount) return;
DCHECK(enabled());
- clearBreakpoints();
m_debuggerScript.Reset();
m_debuggerContext.Reset();
allAsyncTasksCanceled();
@@ -220,91 +219,6 @@ void V8Debugger::getCompiledScripts(
}
}
-String16 V8Debugger::setBreakpoint(const ScriptBreakpoint& breakpoint,
- int* actualLineNumber,
- int* actualColumnNumber) {
- v8::HandleScope scope(m_isolate);
- v8::Local<v8::Context> context = debuggerContext();
- v8::Context::Scope contextScope(context);
-
- v8::Local<v8::Object> info = v8::Object::New(m_isolate);
- bool success = false;
- success = info->Set(context, toV8StringInternalized(m_isolate, "sourceID"),
- toV8String(m_isolate, breakpoint.script_id))
- .FromMaybe(false);
- DCHECK(success);
- success = info->Set(context, toV8StringInternalized(m_isolate, "lineNumber"),
- v8::Integer::New(m_isolate, breakpoint.line_number))
- .FromMaybe(false);
- DCHECK(success);
- success =
- info->Set(context, toV8StringInternalized(m_isolate, "columnNumber"),
- v8::Integer::New(m_isolate, breakpoint.column_number))
- .FromMaybe(false);
- DCHECK(success);
- success = info->Set(context, toV8StringInternalized(m_isolate, "condition"),
- toV8String(m_isolate, breakpoint.condition))
- .FromMaybe(false);
- DCHECK(success);
- USE(success);
-
- v8::Local<v8::Function> setBreakpointFunction = v8::Local<v8::Function>::Cast(
- m_debuggerScript.Get(m_isolate)
- ->Get(context, toV8StringInternalized(m_isolate, "setBreakpoint"))
- .ToLocalChecked());
- v8::Local<v8::Value> breakpointId =
- v8::debug::Call(debuggerContext(), setBreakpointFunction, info)
- .ToLocalChecked();
- if (!breakpointId->IsString()) return "";
- *actualLineNumber =
- info->Get(context, toV8StringInternalized(m_isolate, "lineNumber"))
- .ToLocalChecked()
- ->Int32Value(context)
- .FromJust();
- *actualColumnNumber =
- info->Get(context, toV8StringInternalized(m_isolate, "columnNumber"))
- .ToLocalChecked()
- ->Int32Value(context)
- .FromJust();
- return toProtocolString(breakpointId.As<v8::String>());
-}
-
-void V8Debugger::removeBreakpoint(const String16& breakpointId) {
- v8::HandleScope scope(m_isolate);
- v8::Local<v8::Context> context = debuggerContext();
- v8::Context::Scope contextScope(context);
-
- v8::Local<v8::Object> info = v8::Object::New(m_isolate);
- bool success = false;
- success =
- info->Set(context, toV8StringInternalized(m_isolate, "breakpointId"),
- toV8String(m_isolate, breakpointId))
- .FromMaybe(false);
- DCHECK(success);
- USE(success);
-
- v8::Local<v8::Function> removeBreakpointFunction =
- v8::Local<v8::Function>::Cast(
- m_debuggerScript.Get(m_isolate)
- ->Get(context,
- toV8StringInternalized(m_isolate, "removeBreakpoint"))
- .ToLocalChecked());
- v8::debug::Call(debuggerContext(), removeBreakpointFunction, info)
- .ToLocalChecked();
-}
-
-void V8Debugger::clearBreakpoints() {
- v8::HandleScope scope(m_isolate);
- v8::Local<v8::Context> context = debuggerContext();
- v8::Context::Scope contextScope(context);
-
- v8::Local<v8::Function> clearBreakpoints = v8::Local<v8::Function>::Cast(
- m_debuggerScript.Get(m_isolate)
- ->Get(context, toV8StringInternalized(m_isolate, "clearBreakpoints"))
- .ToLocalChecked());
- v8::debug::Call(debuggerContext(), clearBreakpoints).ToLocalChecked();
-}
-
void V8Debugger::setBreakpointsActivated(bool activated) {
if (!enabled()) {
UNREACHABLE();
@@ -517,17 +431,18 @@ void V8Debugger::breakProgramCallback(
v8::Local<v8::Context> pausedContext =
thisPtr->m_isolate->GetCurrentContext();
v8::Local<v8::Value> exception;
- v8::Local<v8::Array> hitBreakpoints;
+ v8::PersistentValueVector<v8::debug::BreakPoint> hitBreakpoints(
+ thisPtr->m_isolate);
thisPtr->handleProgramBreak(pausedContext,
v8::Local<v8::Object>::Cast(info[0]), exception,
hitBreakpoints);
}
-void V8Debugger::handleProgramBreak(v8::Local<v8::Context> pausedContext,
- v8::Local<v8::Object> executionState,
- v8::Local<v8::Value> exception,
- v8::Local<v8::Array> hitBreakpointNumbers,
- bool isPromiseRejection, bool isUncaught) {
+void V8Debugger::handleProgramBreak(
+ v8::Local<v8::Context> pausedContext, v8::Local<v8::Object> executionState,
+ v8::Local<v8::Value> exception,
+ const v8::PersistentValueVector<v8::debug::BreakPoint>& hitBreakPoints,
+ bool isPromiseRejection, bool isUncaught) {
// Don't allow nested breaks.
if (isPaused()) return;
@@ -535,23 +450,11 @@ void V8Debugger::handleProgramBreak(v8::Local<v8::Context> pausedContext,
m_inspector->contextGroupId(pausedContext));
if (!agent || (agent->skipAllPauses() && !m_scheduledOOMBreak)) return;
- std::vector<String16> breakpointIds;
- if (!hitBreakpointNumbers.IsEmpty()) {
- breakpointIds.reserve(hitBreakpointNumbers->Length());
- for (uint32_t i = 0; i < hitBreakpointNumbers->Length(); i++) {
- v8::Local<v8::Value> hitBreakpointNumber =
- hitBreakpointNumbers->Get(debuggerContext(), i).ToLocalChecked();
- DCHECK(hitBreakpointNumber->IsInt32());
- breakpointIds.push_back(String16::fromInteger(
- hitBreakpointNumber->Int32Value(debuggerContext()).FromJust()));
- }
- }
-
m_pausedContext = pausedContext;
m_executionState = executionState;
m_runningNestedMessageLoop = true;
agent->didPause(InspectedContext::contextId(pausedContext), exception,
- breakpointIds, isPromiseRejection, isUncaught,
+ hitBreakPoints, isPromiseRejection, isUncaught,
m_scheduledOOMBreak);
int groupId = m_inspector->contextGroupId(pausedContext);
DCHECK(groupId);
@@ -595,15 +498,25 @@ void V8Debugger::ScriptCompiled(v8::Local<v8::debug::Script> script,
void V8Debugger::BreakProgramRequested(v8::Local<v8::Context> pausedContext,
v8::Local<v8::Object> execState,
v8::Local<v8::Value> breakPointsHit) {
- v8::Local<v8::Value> argv[] = {breakPointsHit};
- v8::Local<v8::Value> hitBreakpoints;
- if (!callDebuggerMethod("getBreakpointNumbers", 1, argv, true)
- .ToLocal(&hitBreakpoints)) {
+ v8::PersistentValueVector<v8::debug::BreakPoint> breakPoints(m_isolate);
+ if (!breakPointsHit->IsArray()) {
+ handleProgramBreak(pausedContext, execState, v8::Local<v8::Value>(),
+ breakPoints);
return;
}
- DCHECK(hitBreakpoints->IsArray());
+ v8::Local<v8::Array> breakPointsHitArray =
+ v8::Local<v8::Array>::Cast(breakPointsHit);
+ for (uint32_t i = 0; i < breakPointsHitArray->Length(); ++i) {
+ v8::Local<v8::Value> item;
+ if (!breakPointsHitArray->Get(pausedContext, i).ToLocal(&item)) continue;
+ v8::Local<v8::debug::BreakPoint> breakPoint;
+ if (!v8::debug::BreakPoint::Cast(m_isolate, item).ToLocal(&breakPoint)) {
+ continue;
+ }
+ breakPoints.Append(breakPoint);
+ }
handleProgramBreak(pausedContext, execState, v8::Local<v8::Value>(),
- hitBreakpoints.As<v8::Array>());
+ breakPoints);
}
void V8Debugger::ExceptionThrown(v8::Local<v8::Context> pausedContext,
@@ -612,8 +525,9 @@ void V8Debugger::ExceptionThrown(v8::Local<v8::Context> pausedContext,
v8::Local<v8::Value> promise,
bool isUncaught) {
bool isPromiseRejection = promise->IsPromise();
- handleProgramBreak(pausedContext, execState, exception,
- v8::Local<v8::Array>(), isPromiseRejection, isUncaught);
+ v8::PersistentValueVector<v8::debug::BreakPoint> hitBreakpoints(m_isolate);
+ handleProgramBreak(pausedContext, execState, exception, hitBreakpoints,
+ isPromiseRejection, isUncaught);
}
bool V8Debugger::IsFunctionBlackboxed(v8::Local<v8::debug::Script> script,
« no previous file with comments | « src/inspector/v8-debugger.h ('k') | src/inspector/v8-debugger-agent-impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698