Chromium Code Reviews| Index: src/inspector/v8-stack-trace-impl.cc | 
| diff --git a/src/inspector/v8-stack-trace-impl.cc b/src/inspector/v8-stack-trace-impl.cc | 
| index 1a38c6dd82a002b11db462beb6c6ef07e5f9f61f..6c86319603ede9ce3d1df07bc810653e0bb9ca41 100644 | 
| --- a/src/inspector/v8-stack-trace-impl.cc | 
| +++ b/src/inspector/v8-stack-trace-impl.cc | 
| @@ -5,6 +5,7 @@ | 
| #include "src/inspector/v8-stack-trace-impl.h" | 
| #include "src/inspector/string-util.h" | 
| +#include "src/inspector/v8-debugger-agent-impl.h" | 
| #include "src/inspector/v8-debugger.h" | 
| #include "src/inspector/v8-inspector-impl.h" | 
| #include "src/inspector/v8-profiler-agent-impl.h" | 
| @@ -23,7 +24,8 @@ static const v8::StackTrace::StackTraceOptions stackTraceOptions = | 
| v8::StackTrace::kScriptId | v8::StackTrace::kScriptNameOrSourceURL | | 
| v8::StackTrace::kFunctionName); | 
| -V8StackTraceImpl::Frame toFrame(v8::Local<v8::StackFrame> frame) { | 
| +V8StackTraceImpl::Frame toFrame(V8DebuggerAgentImpl* agent, | 
| + v8::Local<v8::StackFrame> frame) { | 
| String16 scriptId = String16::fromInteger(frame->GetScriptId()); | 
| String16 sourceName; | 
| v8::Local<v8::String> sourceNameValue(frame->GetScriptNameOrSourceURL()); | 
| @@ -35,13 +37,17 @@ V8StackTraceImpl::Frame toFrame(v8::Local<v8::StackFrame> frame) { | 
| if (!functionNameValue.IsEmpty()) | 
| functionName = toProtocolString(functionNameValue); | 
| - int sourceLineNumber = frame->GetLineNumber(); | 
| - int sourceColumn = frame->GetColumn(); | 
| + int sourceLineNumber = frame->GetLineNumber() - 1; | 
| + int sourceColumn = frame->GetColumn() - 1; | 
| + if (agent) | 
| + agent->wasmTranslation()->TranslateProtocolLocationToWasmScriptLocation( | 
| 
 
dgozman
2016/11/16 19:00:10
This is a wrong place for translation - it could b
 
Clemens Hammacher
2016/11/16 20:31:30
Not sure if this is fixed with the switch from deb
 
dgozman
2016/11/16 22:01:27
We can translate here when debugger is disabled, a
 
Clemens Hammacher
2016/11/16 22:43:31
As discussed in chat: We postpone this, as it seem
 
 | 
| + &scriptId, &sourceLineNumber, &sourceColumn); | 
| return V8StackTraceImpl::Frame(functionName, scriptId, sourceName, | 
| - sourceLineNumber, sourceColumn); | 
| + sourceLineNumber + 1, sourceColumn + 1); | 
| } | 
| -void toFramesVector(v8::Local<v8::StackTrace> stackTrace, | 
| +void toFramesVector(V8DebuggerAgentImpl* agent, | 
| + v8::Local<v8::StackTrace> stackTrace, | 
| std::vector<V8StackTraceImpl::Frame>& frames, | 
| size_t maxStackSize, v8::Isolate* isolate) { | 
| DCHECK(isolate->InContext()); | 
| @@ -50,7 +56,7 @@ void toFramesVector(v8::Local<v8::StackTrace> stackTrace, | 
| frameCount = static_cast<int>(maxStackSize); | 
| for (int i = 0; i < frameCount; i++) { | 
| v8::Local<v8::StackFrame> stackFrame = stackTrace->GetFrame(i); | 
| - frames.push_back(toFrame(stackFrame)); | 
| + frames.push_back(toFrame(agent, stackFrame)); | 
| } | 
| } | 
| @@ -112,8 +118,12 @@ std::unique_ptr<V8StackTraceImpl> V8StackTraceImpl::create( | 
| v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 
| v8::HandleScope scope(isolate); | 
| std::vector<V8StackTraceImpl::Frame> frames; | 
| + V8DebuggerAgentImpl* agent = | 
| + debugger | 
| + ? debugger->inspector()->enabledDebuggerAgentForGroup(contextGroupId) | 
| + : nullptr; | 
| if (!stackTrace.IsEmpty()) | 
| - toFramesVector(stackTrace, frames, maxStackSize, isolate); | 
| + toFramesVector(agent, stackTrace, frames, maxStackSize, isolate); | 
| int maxAsyncCallChainDepth = 1; | 
| V8StackTraceImpl* asyncCallChain = nullptr; |