v8/test/mjsunit/wasm
clemensh 890d28f361 [wasm] Fix location for error in asm.js ToNumber conversion
In the asm.js code translated to wasm, we call imported functions via a
WASM_TO_JS stub, which first calls the function and then calls ToNumber
on the return value. Exceptions can happen in both calls.
We were only ever reporting the location of the function call, whereas
asm.js code executed via turbofan reported the location of the type
coercion operator ("+" on "+foo()" or "|" on "foo()|0").

This CL implements the same behaviour for asm.js code translated to
wasm. The following is changed:
- the AsmWasmBuilder records the parent node when descending on a binary
  operator (also "+foo()" is represented by a binary operation).
- it stores not one location per call in the source position side
  table, but two (one for the call, one for the parent which does the
  type coercion).
- the wasm compiler annotates the source positions "0" and "1" to the
  two calls in the WASM_TO_JS wrapper (only if the module origin is
  asm.js).
- the StackFrame::State struct now also holds the callee_pc_address,
  which is set in ComputeCallerState. The WASM frame uses this
  information to determine whether the callee frame is WASM_TO_JS, and
  whether that frame is at the ToNumber conversion call.
- the same information is also stored in the FrameArray which is used
  to reconstruct the stack trace later.

R=titzer@chromium.org, bradnelson@chromium.org
CC=jgruber@chromium.org
BUG=v8:4203,v8:5724

Committed: https://crrev.com/94cd46b55e24fa2bb7b06b3da4d5ba7f029bc262
Review-Url: https://codereview.chromium.org/2555243002
Cr-Original-Commit-Position: refs/heads/master@{#41599}
Cr-Commit-Position: refs/heads/master@{#41613}
2016-12-09 10:30:19 +00:00
..
embenchen [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
adapter-frame.js Refactor module builder 2016-06-21 19:48:16 +00:00
asm-wasm-copy.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-deopt.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-exception-in-tonumber.js [wasm] Fix location for error in asm.js ToNumber conversion 2016-12-09 10:30:19 +00:00
asm-wasm-expr.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
asm-wasm-f32.js [wasm] Avoid using const that triggers ignition and flakes on ARM. 2016-12-02 13:54:43 +00:00
asm-wasm-f64.js [wasm] [asm.js] Fix various asm.js issues. 2016-09-28 16:37:04 +00:00
asm-wasm-heap.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-i32.js [wasm] [asm.js] Fix various asm.js issues. 2016-09-28 16:37:04 +00:00
asm-wasm-literals.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-names.js [wasm] Honor the names section for modules coming from asm.js. 2016-12-06 14:31:51 +00:00
asm-wasm-stack.js [wasm] Fix binary search for asm.js offsets 2016-10-25 09:00:57 +00:00
asm-wasm-stdlib.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-switch.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-u32.js [wasm] [asm.js] Fix various asm.js issues. 2016-09-28 16:37:04 +00:00
asm-wasm.js [wasm][asm.js] Utf8 encode exported function names. 2016-12-08 08:52:53 +00:00
calls.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
compiled-module-management.js [wasm] Fix compiled-module-management lifetime issues. 2016-11-03 15:53:56 +00:00
compiled-module-serialization.js [wasm] make WebAssembly.Instance require a WebAssembly.Memory 2016-10-28 18:13:28 +00:00
data-segments.js [wasm] Only immutable imported globals are valid initializer expressions 2016-11-09 15:52:36 +00:00
divrem-trap.js [mjsunit] Change assertThrows such that it can check the exception message. 2016-11-28 10:26:44 +00:00
ensure-wasm-binaries-up-to-date.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
errors.js [wasm] Implement {Compile,Runtime}Error; fix traps from start function 2016-10-13 16:18:10 +00:00
exceptions.js [wasm] Reduce usage of old Wasm.* API in JS tests. 2016-10-13 16:55:57 +00:00
export-table.js [wasm] Names of exported functions should be the stringified function index. 2016-12-06 15:33:42 +00:00
ffi-error.js [wasm] Fix ToNumber conversion 2016-12-07 13:54:27 +00:00
ffi.js [wasm] Fix ToNumber conversion 2016-12-07 13:54:27 +00:00
function-names.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
function-prototype.js [wasm] Names of exported functions should be the stringified function index. 2016-12-06 15:33:42 +00:00
gc-buffer.js [wasm] Use a Managed<WasmModule> to hold metadata about modules. 2016-10-19 13:07:22 +00:00
gc-frame.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
gc-stress.js [wasm] Refactor import handling for 0xC. 2016-10-06 15:43:22 +00:00
globals.js Imported and defined globals share an index space, but previously the decoder clobbered the imported global indices with the defined globals. 2016-10-12 15:19:41 +00:00
grow-memory.js [wasm] Linear/Exported memory maximum property should be set when maximum is defined. 2016-11-08 09:55:27 +00:00
import-memory.js [wasm] Update WasmMemoryObject correctly when module memory is exported. 2016-12-08 20:30:54 +00:00
import-table.js [wasm] Refactor import handling for 0xC. 2016-10-06 15:43:22 +00:00
incrementer.wasm [wasm] Binary 0xD: update encoding of opcodes, types, and add immediates. 2016-10-26 16:56:49 +00:00
indirect-calls.js [wasm] Binary 0xD: update encoding of opcodes, types, and add immediates. 2016-10-26 16:56:49 +00:00
indirect-tables.js [wasm] Names of exported functions should be the stringified function index. 2016-12-06 15:33:42 +00:00
instance-gc.js [wasm] Refactor import handling for 0xC. 2016-10-06 15:43:22 +00:00
instance-memory-gc-stress.js [wasm] Fix WasmInstanceWrapper allocation. 2016-12-03 01:29:49 +00:00
instantiate-module-basic.js [wasm] WebAssembly.Memory object can be referenced by multiple Instance objects. 2016-11-23 20:44:29 +00:00
instantiate-run-basic.js [wasm] Binary 11: Bump module version to 0xB. 2016-04-29 09:40:24 +00:00
memory-instance-validation.js [wasm] WebAssembly.Memory object can be referenced by multiple Instance objects. 2016-11-23 20:44:29 +00:00
memory-size.js [wasm] Binary 0xD: update encoding of opcodes, types, and add immediates. 2016-10-26 16:56:49 +00:00
memory.js [wasm] Do a proper HasProperty() check in the memory and table setup. 2016-09-26 13:08:01 +00:00
module-memory.js [wasm] make WebAssembly.Instance require a WebAssembly.Memory 2016-10-28 18:13:28 +00:00
no-wasm-by-default.js [wasm] Dont ship by default. 2016-07-01 11:37:47 +00:00
OWNERS Adding a few more owners to the wasm directory. 2016-06-29 17:38:30 +00:00
parallel_compilation.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
params.js Refactor module builder 2016-06-21 19:48:16 +00:00
receiver.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
stack.js [wasm] Binary 0xD: update encoding of opcodes, types, and add immediates. 2016-10-26 16:56:49 +00:00
stackwalk.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
start-function.js [wasm] Wrap start function in a JS->WASM wrapper before calling it during initialization. 2016-11-08 12:37:09 +00:00
table.js Test that table object indexing does not interfere with backing table 2016-11-17 12:55:45 +00:00
test-import-export-wrapper.js [wasm] Imported WebAssembly function are never wrapped. 2016-11-10 15:05:52 +00:00
test-wasm-module-builder.js [wasm] Remove the "Wasm" object. 2016-10-26 16:58:53 +00:00
trap-location.js [wasm] Indirect calls without function table cause validation errors. 2016-11-09 08:37:44 +00:00
unicode-validation.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
unreachable.js [wasm] Binary 11: Bump module version to 0xB. 2016-04-29 09:40:24 +00:00
verify-module-basic-errors.js [wasm] Reduce usage of old Wasm.* API in JS tests. 2016-10-13 16:55:57 +00:00
wasm-constants.js [wasm] Store the function_index directly in the js-to-wasm wrapper. 2016-11-03 14:28:37 +00:00
wasm-module-builder.js [wasm] Be more lenient on the names section. 2016-11-15 20:55:55 +00:00
wasm-object-api.js [wasm] Remove the "Wasm" object. 2016-10-26 16:58:53 +00:00