Closed Bug 1592983 Opened 5 years ago Closed 5 years ago

Only validate WebAssembly baseline stack in live code

Categories

(Core :: JavaScript: WebAssembly, defect, P3)

defect

Tracking

()

RESOLVED FIXED
mozilla72
Tracking Status
firefox72 --- fixed

People

(Reporter: wingo, Assigned: wingo)

References

Details

Attachments

(1 file)

Given this test (to be committed):

wasmFullPass(`
  (module
    (func (export "run") (result i32)
      (i32.add
        (block (result i32 i32)
          (i32.const 32)
          (i32.const 10)
          (br 0)))))`,
             42);

After the (br 0) -- which is right before the i32.add, in terms of instruction flow -- the assertStackInvariants check barfed because the Stk value stack no longer corresponded to the dynamic frame height:

Assertion failure: size == fr.dynamicHeight(), at /home/wingo/src/mozilla-unified/js/src/wasm/WasmBaselineCompile.cpp:4412

This is because writing the stack args for the branch resulted in codegen reserving some stack space, but the Stk stack was only reset once the block actually ended.

I think simply avoiding the debug check in dead code might be the right thing.

Priority: -- → P3
Pushed by nbeleuzu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/39bc5b23a7a9
Only validate WebAssembly baseline stack in live code r=lth
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla72
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: