d3d125417d
Reason for revert: gc-stress failures Original issue's description: > [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). > - during stack trace generation (in the StackTraceIterator), when we > move from the WASM_TO_JS frame to the WASM frame, we remember at which > call inside the WASM_TO_JS wrapper we are, and encode this information > in the generated caller state, used for the WASM frame. > - 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 > Cr-Commit-Position: refs/heads/master@{#41599} TBR=bradnelson@chromium.org,mstarzinger@chromium.org,titzer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4203,v8:5724 Review-Url: https://codereview.chromium.org/2563613003 Cr-Commit-Position: refs/heads/master@{#41601} |
||
---|---|---|
.. | ||
embenchen | ||
adapter-frame.js | ||
asm-wasm-copy.js | ||
asm-wasm-deopt.js | ||
asm-wasm-expr.js | ||
asm-wasm-f32.js | ||
asm-wasm-f64.js | ||
asm-wasm-heap.js | ||
asm-wasm-i32.js | ||
asm-wasm-literals.js | ||
asm-wasm-names.js | ||
asm-wasm-stack.js | ||
asm-wasm-stdlib.js | ||
asm-wasm-switch.js | ||
asm-wasm-u32.js | ||
asm-wasm.js | ||
calls.js | ||
compiled-module-management.js | ||
compiled-module-serialization.js | ||
data-segments.js | ||
divrem-trap.js | ||
ensure-wasm-binaries-up-to-date.js | ||
errors.js | ||
exceptions.js | ||
export-table.js | ||
ffi-error.js | ||
ffi.js | ||
function-names.js | ||
function-prototype.js | ||
gc-buffer.js | ||
gc-frame.js | ||
gc-stress.js | ||
globals.js | ||
grow-memory.js | ||
import-memory.js | ||
import-table.js | ||
incrementer.wasm | ||
indirect-calls.js | ||
indirect-tables.js | ||
instance-gc.js | ||
instance-memory-gc-stress.js | ||
instantiate-module-basic.js | ||
instantiate-run-basic.js | ||
memory-instance-validation.js | ||
memory-size.js | ||
memory.js | ||
module-memory.js | ||
no-wasm-by-default.js | ||
OWNERS | ||
parallel_compilation.js | ||
params.js | ||
receiver.js | ||
stack.js | ||
stackwalk.js | ||
start-function.js | ||
table.js | ||
test-import-export-wrapper.js | ||
test-wasm-module-builder.js | ||
trap-location.js | ||
unicode-validation.js | ||
unreachable.js | ||
verify-module-basic-errors.js | ||
wasm-constants.js | ||
wasm-module-builder.js | ||
wasm-object-api.js |