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

Unified Diff: src/isolate.cc

Issue 2806373005: [v8] v8::StackTrace::AsArray returns correct array (Closed)
Patch Set: addressed comments Created 3 years, 8 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/api.cc ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/isolate.cc
diff --git a/src/isolate.cc b/src/isolate.cc
index c3d2ed3d3a31e60a4a121078518ed71ea5d742c1..7cc906a5dd84f6250a1dbadf1b2234ebcbc03b30 100644
--- a/src/isolate.cc
+++ b/src/isolate.cc
@@ -655,9 +655,7 @@ Handle<JSArray> Isolate::GetDetailedStackTrace(Handle<JSObject> error_object) {
class CaptureStackTraceHelper {
public:
- CaptureStackTraceHelper(Isolate* isolate,
- StackTrace::StackTraceOptions options)
- : isolate_(isolate), options_(options) {}
+ explicit CaptureStackTraceHelper(Isolate* isolate) : isolate_(isolate) {}
Handle<StackFrameInfo> NewStackFrameObject(FrameSummary& summ) {
if (summ.IsJavaScript()) return NewStackFrameObject(summ.AsJavaScript());
@@ -670,36 +668,21 @@ class CaptureStackTraceHelper {
const FrameSummary::JavaScriptFrameSummary& summ) {
Handle<StackFrameInfo> frame = factory()->NewStackFrameInfo();
Handle<Script> script = Handle<Script>::cast(summ.script());
- if (options_ & StackTrace::kLineNumber) {
- Script::PositionInfo info;
- bool valid_pos = Script::GetPositionInfo(script, summ.SourcePosition(),
- &info, Script::WITH_OFFSET);
- if (valid_pos) {
- frame->set_line_number(info.line + 1);
- if (options_ & StackTrace::kColumnOffset) {
- frame->set_column_number(info.column + 1);
- }
- }
- }
-
- if (options_ & StackTrace::kScriptId) frame->set_script_id(script->id());
- if (options_ & StackTrace::kScriptName) {
- frame->set_script_name(script->name());
- }
- if (options_ & StackTrace::kScriptNameOrSourceURL) {
- frame->set_script_name_or_source_url(script->GetNameOrSourceURL());
- }
- if (options_ & StackTrace::kIsEval) {
- frame->set_is_eval(script->compilation_type() ==
- Script::COMPILATION_TYPE_EVAL);
- }
- if (options_ & StackTrace::kFunctionName) {
- Handle<String> name = summ.FunctionName();
- frame->set_function_name(*name);
- }
- if (options_ & StackTrace::kIsConstructor) {
- frame->set_is_constructor(summ.is_constructor());
+ Script::PositionInfo info;
+ bool valid_pos = Script::GetPositionInfo(script, summ.SourcePosition(),
+ &info, Script::WITH_OFFSET);
+ if (valid_pos) {
+ frame->set_line_number(info.line + 1);
+ frame->set_column_number(info.column + 1);
}
+ frame->set_script_id(script->id());
+ frame->set_script_name(script->name());
+ frame->set_script_name_or_source_url(script->GetNameOrSourceURL());
+ frame->set_is_eval(script->compilation_type() ==
+ Script::COMPILATION_TYPE_EVAL);
+ Handle<String> function_name = summ.FunctionName();
+ frame->set_function_name(*function_name);
+ frame->set_is_constructor(summ.is_constructor());
frame->set_is_wasm(false);
return frame;
}
@@ -708,27 +691,19 @@ class CaptureStackTraceHelper {
const FrameSummary::WasmFrameSummary& summ) {
Handle<StackFrameInfo> info = factory()->NewStackFrameInfo();
- if (options_ & StackTrace::kFunctionName) {
- Handle<WasmCompiledModule> compiled_module(
- summ.wasm_instance()->compiled_module(), isolate_);
- Handle<String> name = WasmCompiledModule::GetFunctionName(
- isolate_, compiled_module, summ.function_index());
- info->set_function_name(*name);
- }
+ Handle<WasmCompiledModule> compiled_module(
+ summ.wasm_instance()->compiled_module(), isolate_);
+ Handle<String> name = WasmCompiledModule::GetFunctionName(
+ isolate_, compiled_module, summ.function_index());
+ info->set_function_name(*name);
// Encode the function index as line number (1-based).
- if (options_ & StackTrace::kLineNumber) {
- info->set_line_number(summ.function_index() + 1);
- }
+ info->set_line_number(summ.function_index() + 1);
// Encode the byte offset as column (1-based).
- if (options_ & StackTrace::kColumnOffset) {
- int position = summ.byte_offset();
- // Make position 1-based.
- if (position >= 0) ++position;
- info->set_column_number(position);
- }
- if (options_ & StackTrace::kScriptId) {
- info->set_script_id(summ.script()->id());
- }
+ int position = summ.byte_offset();
+ // Make position 1-based.
+ if (position >= 0) ++position;
+ info->set_column_number(position);
+ info->set_script_id(summ.script()->id());
info->set_is_wasm(true);
return info;
}
@@ -737,13 +712,12 @@ class CaptureStackTraceHelper {
inline Factory* factory() { return isolate_->factory(); }
Isolate* isolate_;
- StackTrace::StackTraceOptions options_;
};
Handle<JSArray> Isolate::CaptureCurrentStackTrace(
int frame_limit, StackTrace::StackTraceOptions options) {
DisallowJavascriptExecution no_js(this);
- CaptureStackTraceHelper helper(this, options);
+ CaptureStackTraceHelper helper(this);
// Ensure no negative values.
int limit = Max(frame_limit, 0);
« no previous file with comments | « src/api.cc ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698