Commit c0c1d760 authored by kozyatinskiy's avatar kozyatinskiy Committed by Commit bot

[inspector] introduced StackFrame::IsWasm flag

We don't need to do any kind of translation for non-wasm frames. And we need this knowledge for lazy symbolization.
Capturing stack trace is ~7% faster.

BUG=v8:6189
R=dgozman@chromium.org,yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2795103004
Cr-Commit-Position: refs/heads/master@{#44502}
parent d9691952
...@@ -1646,6 +1646,11 @@ class V8_EXPORT StackFrame { ...@@ -1646,6 +1646,11 @@ class V8_EXPORT StackFrame {
* constructor via "new". * constructor via "new".
*/ */
bool IsConstructor() const; bool IsConstructor() const;
/**
* Returns whether or not the associated functions is defined in wasm.
*/
bool IsWasm() const;
}; };
......
...@@ -2930,6 +2930,7 @@ bool StackFrame::IsConstructor() const { ...@@ -2930,6 +2930,7 @@ bool StackFrame::IsConstructor() const {
return Utils::OpenHandle(this)->is_constructor(); return Utils::OpenHandle(this)->is_constructor();
} }
bool StackFrame::IsWasm() const { return Utils::OpenHandle(this)->is_wasm(); }
// --- N a t i v e W e a k M a p --- // --- N a t i v e W e a k M a p ---
......
...@@ -40,8 +40,10 @@ V8StackTraceImpl::Frame toFrame(v8::Local<v8::StackFrame> frame, ...@@ -40,8 +40,10 @@ V8StackTraceImpl::Frame toFrame(v8::Local<v8::StackFrame> frame,
int sourceColumn = frame->GetColumn() - 1; int sourceColumn = frame->GetColumn() - 1;
// TODO(clemensh): Figure out a way to do this translation only right before // TODO(clemensh): Figure out a way to do this translation only right before
// sending the stack trace over wire. // sending the stack trace over wire.
wasmTranslation->TranslateWasmScriptLocationToProtocolLocation( if (frame->IsWasm()) {
&scriptId, &sourceLineNumber, &sourceColumn); wasmTranslation->TranslateWasmScriptLocationToProtocolLocation(
&scriptId, &sourceLineNumber, &sourceColumn);
}
return V8StackTraceImpl::Frame(functionName, scriptId, sourceName, return V8StackTraceImpl::Frame(functionName, scriptId, sourceName,
sourceLineNumber + 1, sourceColumn + 1); sourceLineNumber + 1, sourceColumn + 1);
} }
......
...@@ -679,6 +679,7 @@ class CaptureStackTraceHelper { ...@@ -679,6 +679,7 @@ class CaptureStackTraceHelper {
if (options_ & StackTrace::kIsConstructor) { if (options_ & StackTrace::kIsConstructor) {
frame->set_is_constructor(summ.is_constructor()); frame->set_is_constructor(summ.is_constructor());
} }
frame->set_is_wasm(false);
return frame; return frame;
} }
...@@ -707,6 +708,7 @@ class CaptureStackTraceHelper { ...@@ -707,6 +708,7 @@ class CaptureStackTraceHelper {
if (options_ & StackTrace::kScriptId) { if (options_ & StackTrace::kScriptId) {
info->set_script_id(summ.script()->id()); info->set_script_id(summ.script()->id());
} }
info->set_is_wasm(true);
return info; return info;
} }
......
...@@ -5819,6 +5819,7 @@ ACCESSORS(StackFrameInfo, function_name, Object, kFunctionNameIndex) ...@@ -5819,6 +5819,7 @@ ACCESSORS(StackFrameInfo, function_name, Object, kFunctionNameIndex)
SMI_ACCESSORS(StackFrameInfo, flag, kFlagIndex) SMI_ACCESSORS(StackFrameInfo, flag, kFlagIndex)
BOOL_ACCESSORS(StackFrameInfo, flag, is_eval, kIsEvalBit) BOOL_ACCESSORS(StackFrameInfo, flag, is_eval, kIsEvalBit)
BOOL_ACCESSORS(StackFrameInfo, flag, is_constructor, kIsConstructorBit) BOOL_ACCESSORS(StackFrameInfo, flag, is_constructor, kIsConstructorBit)
BOOL_ACCESSORS(StackFrameInfo, flag, is_wasm, kIsWasmBit)
ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset) ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset)
ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray, ACCESSORS(SharedFunctionInfo, optimized_code_map, FixedArray,
......
...@@ -10112,6 +10112,7 @@ class StackFrameInfo : public Struct { ...@@ -10112,6 +10112,7 @@ class StackFrameInfo : public Struct {
DECL_ACCESSORS(function_name, Object) DECL_ACCESSORS(function_name, Object)
DECL_BOOLEAN_ACCESSORS(is_eval) DECL_BOOLEAN_ACCESSORS(is_eval)
DECL_BOOLEAN_ACCESSORS(is_constructor) DECL_BOOLEAN_ACCESSORS(is_constructor)
DECL_BOOLEAN_ACCESSORS(is_wasm)
DECL_INT_ACCESSORS(flag) DECL_INT_ACCESSORS(flag)
DECLARE_CAST(StackFrameInfo) DECLARE_CAST(StackFrameInfo)
...@@ -10135,6 +10136,7 @@ class StackFrameInfo : public Struct { ...@@ -10135,6 +10136,7 @@ class StackFrameInfo : public Struct {
// Bit position in the flag, from least significant bit position. // Bit position in the flag, from least significant bit position.
static const int kIsEvalBit = 0; static const int kIsEvalBit = 0;
static const int kIsConstructorBit = 1; static const int kIsConstructorBit = 1;
static const int kIsWasmBit = 2;
DISALLOW_IMPLICIT_CONSTRUCTORS(StackFrameInfo); DISALLOW_IMPLICIT_CONSTRUCTORS(StackFrameInfo);
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment