Index: src/isolate.cc |
diff --git a/src/isolate.cc b/src/isolate.cc |
index 559f0a0292b689d78e05ce8ef0bf3a78633db533..c81afcc0e744226b626a9ba497af6199aa6ec5ef 100644 |
--- a/src/isolate.cc |
+++ b/src/isolate.cc |
@@ -547,46 +547,60 @@ class CaptureStackTraceHelper { |
Handle<JSObject> stack_frame = |
factory()->NewJSObject(isolate_->object_function()); |
- Handle<Script> script(Script::cast(fun->shared()->script())); |
- |
- if (!line_key_.is_null()) { |
- int script_line_offset = script->line_offset(); |
- int line_number = Script::GetLineNumber(script, position); |
- // line_number is already shifted by the script_line_offset. |
- int relative_line_number = line_number - script_line_offset; |
- if (!column_key_.is_null() && relative_line_number >= 0) { |
- Handle<FixedArray> line_ends(FixedArray::cast(script->line_ends())); |
- int start = (relative_line_number == 0) ? 0 : |
- Smi::cast(line_ends->get(relative_line_number - 1))->value() + 1; |
- int column_offset = position - start; |
- if (relative_line_number == 0) { |
- // For the case where the code is on the same line as the script |
- // tag. |
- column_offset += script->column_offset(); |
+ // TODO(clemensh): this can be changed to a DCHECK once also WASM frames |
+ // define a script |
+ if (!fun->shared()->script()->IsUndefined()) { |
+ Handle<Script> script(Script::cast(fun->shared()->script())); |
+ |
+ if (!line_key_.is_null()) { |
+ int script_line_offset = script->line_offset(); |
+ int line_number = Script::GetLineNumber(script, position); |
+ // line_number is already shifted by the script_line_offset. |
+ int relative_line_number = line_number - script_line_offset; |
+ if (!column_key_.is_null() && relative_line_number >= 0) { |
+ Handle<FixedArray> line_ends(FixedArray::cast(script->line_ends())); |
+ int start = (relative_line_number == 0) |
+ ? 0 |
+ : Smi::cast(line_ends->get(relative_line_number - 1)) |
+ ->value() + |
+ 1; |
+ int column_offset = position - start; |
+ if (relative_line_number == 0) { |
+ // For the case where the code is on the same line as the script |
+ // tag. |
+ column_offset += script->column_offset(); |
+ } |
+ JSObject::AddProperty( |
+ stack_frame, column_key_, |
+ handle(Smi::FromInt(column_offset + 1), isolate_), NONE); |
} |
- JSObject::AddProperty(stack_frame, column_key_, |
- handle(Smi::FromInt(column_offset + 1), isolate_), |
+ JSObject::AddProperty(stack_frame, line_key_, |
+ handle(Smi::FromInt(line_number + 1), isolate_), |
NONE); |
} |
- JSObject::AddProperty(stack_frame, line_key_, |
- handle(Smi::FromInt(line_number + 1), isolate_), |
- NONE); |
- } |
- if (!script_id_key_.is_null()) { |
- JSObject::AddProperty(stack_frame, script_id_key_, |
- handle(Smi::FromInt(script->id()), isolate_), NONE); |
- } |
+ if (!script_id_key_.is_null()) { |
+ JSObject::AddProperty(stack_frame, script_id_key_, |
+ handle(Smi::FromInt(script->id()), isolate_), |
+ NONE); |
+ } |
- if (!script_name_key_.is_null()) { |
- JSObject::AddProperty(stack_frame, script_name_key_, |
- handle(script->name(), isolate_), NONE); |
- } |
+ if (!script_name_key_.is_null()) { |
+ JSObject::AddProperty(stack_frame, script_name_key_, |
+ handle(script->name(), isolate_), NONE); |
+ } |
- if (!script_name_or_source_url_key_.is_null()) { |
- Handle<Object> result = Script::GetNameOrSourceURL(script); |
- JSObject::AddProperty(stack_frame, script_name_or_source_url_key_, result, |
- NONE); |
+ if (!script_name_or_source_url_key_.is_null()) { |
+ Handle<Object> result = Script::GetNameOrSourceURL(script); |
+ JSObject::AddProperty(stack_frame, script_name_or_source_url_key_, |
+ result, NONE); |
+ } |
+ |
+ if (!eval_key_.is_null()) { |
+ Handle<Object> is_eval = factory()->ToBoolean( |
+ script->compilation_type() == Script::COMPILATION_TYPE_EVAL); |
+ JSObject::AddProperty(stack_frame, eval_key_, is_eval, NONE); |
+ } |
} |
if (!function_key_.is_null()) { |
@@ -594,12 +608,6 @@ class CaptureStackTraceHelper { |
JSObject::AddProperty(stack_frame, function_key_, fun_name, NONE); |
} |
- if (!eval_key_.is_null()) { |
- Handle<Object> is_eval = factory()->ToBoolean( |
- script->compilation_type() == Script::COMPILATION_TYPE_EVAL); |
- JSObject::AddProperty(stack_frame, eval_key_, is_eval, NONE); |
- } |
- |
if (!constructor_key_.is_null()) { |
Handle<Object> is_constructor_obj = factory()->ToBoolean(is_constructor); |
JSObject::AddProperty(stack_frame, constructor_key_, is_constructor_obj, |