| 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 340024fbf525e8e8c6f9fe6b291193e54cd1082d..17797ff6f51cff964e40837f19cc8872e7fdda38 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"
|
|
|
| @@ -21,7 +22,9 @@ 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(v8::Local<v8::StackFrame> frame,
|
| + WasmTranslation* wasmTranslation,
|
| + int contextGroupId) {
|
| String16 scriptId = String16::fromInteger(frame->GetScriptId());
|
| String16 sourceName;
|
| v8::Local<v8::String> sourceNameValue(frame->GetScriptNameOrSourceURL());
|
| @@ -33,22 +36,30 @@ 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;
|
| + // TODO(clemensh): Figure out a way to do this translation only right before
|
| + // sending the stack trace over wire.
|
| + if (wasmTranslation)
|
| + wasmTranslation->TranslateWasmScriptLocationToProtocolLocation(
|
| + &scriptId, &sourceLineNumber, &sourceColumn, contextGroupId);
|
| return V8StackTraceImpl::Frame(functionName, scriptId, sourceName,
|
| - sourceLineNumber, sourceColumn);
|
| + sourceLineNumber + 1, sourceColumn + 1);
|
| }
|
|
|
| void toFramesVector(v8::Local<v8::StackTrace> stackTrace,
|
| std::vector<V8StackTraceImpl::Frame>& frames,
|
| - size_t maxStackSize, v8::Isolate* isolate) {
|
| + size_t maxStackSize, v8::Isolate* isolate,
|
| + V8Debugger* debugger, int contextGroupId) {
|
| DCHECK(isolate->InContext());
|
| int frameCount = stackTrace->GetFrameCount();
|
| if (frameCount > static_cast<int>(maxStackSize))
|
| frameCount = static_cast<int>(maxStackSize);
|
| + WasmTranslation* wasmTranslation =
|
| + debugger ? debugger->wasmTranslation() : nullptr;
|
| for (int i = 0; i < frameCount; i++) {
|
| v8::Local<v8::StackFrame> stackFrame = stackTrace->GetFrame(i);
|
| - frames.push_back(toFrame(stackFrame));
|
| + frames.push_back(toFrame(stackFrame, wasmTranslation, contextGroupId));
|
| }
|
| }
|
|
|
| @@ -111,7 +122,8 @@ std::unique_ptr<V8StackTraceImpl> V8StackTraceImpl::create(
|
| v8::HandleScope scope(isolate);
|
| std::vector<V8StackTraceImpl::Frame> frames;
|
| if (!stackTrace.IsEmpty())
|
| - toFramesVector(stackTrace, frames, maxStackSize, isolate);
|
| + toFramesVector(stackTrace, frames, maxStackSize, isolate, debugger,
|
| + contextGroupId);
|
|
|
| int maxAsyncCallChainDepth = 1;
|
| V8StackTraceImpl* asyncCallChain = nullptr;
|
|
|