Index: src/isolate.cc |
diff --git a/src/isolate.cc b/src/isolate.cc |
index 2cd04f66c72aa5c54013ea914d35660008115195..66a29ca8cfb75b856142bdcc300d35992d974fa9 100644 |
--- a/src/isolate.cc |
+++ b/src/isolate.cc |
@@ -523,9 +523,15 @@ Handle<Object> Isolate::CaptureSimpleStackTrace(Handle<JSReceiver> error_object, |
// be a wasm object. |
DCHECK(wasm::IsWasmInstance(*instance) || instance->IsUndefined(this)); |
- int flags = wasm::WasmIsAsmJs(*instance, this) |
- ? FrameArray::kIsAsmJsWasmFrame |
- : FrameArray::kIsWasmFrame; |
+ int flags = 0; |
+ if (wasm::WasmIsAsmJs(*instance, this)) { |
+ flags |= FrameArray::kIsAsmJsWasmFrame; |
+ if (wasm_frame->at_to_number_conversion()) { |
+ flags |= FrameArray::kAsmJsAtNumberConversion; |
+ } |
+ } else { |
+ flags |= FrameArray::kIsWasmFrame; |
+ } |
elements = |
FrameArray::AppendWasmFrame(elements, instance, wasm_function_index, |
@@ -1558,8 +1564,10 @@ bool Isolate::ComputeLocationFromStackTrace(MessageLocation* target, |
int func_index = elements->WasmFunctionIndex(i)->value(); |
int code_offset = elements->Offset(i)->value(); |
int byte_pos = elements->Code(i)->SourcePosition(code_offset); |
+ bool at_tonumber_conversion = |
+ elements->Flags(i)->value() & FrameArray::kAsmJsAtNumberConversion; |
int source_pos = WasmCompiledModule::GetAsmJsSourcePosition( |
- compiled_module, func_index, byte_pos); |
+ compiled_module, func_index, byte_pos, at_tonumber_conversion); |
Handle<Script> script = compiled_module->script(); |
*target = MessageLocation(script, source_pos, source_pos + 1); |