Re: Disable Web Assembly Memory Checks
Benjamin Bouvier <[email protected]> Fri, 23 Feb 2018 12:44:40 +0100
| Newsgroups | gmane.comp.mozilla.devel.jseng |
|---|---|
| Message-ID | <CAGXKBOA5r+oTt4DD348RxVvOD0YNvvhtQbfSvpDmKs=1SZpxJA@mail.gmail.com> |
We don't have shell flags to do this at the moment. Regarding memory accesses checks: - on x64 (and probably on ARM64 when we get to implement it, aka WASM_HUGE_MEMORY platforms), we use mprotect and signal handling to catch memory accesses that are out of bounds, so no bounds checks are generated for those. - other platforms get explicit bounds checks. You can disable them for Ion with an early return in CodeGenerator::visitWasmBoundsCheck: https://searchfox.org/mozilla-central/source/js/src/jit/ CodeGenerator.cpp#12685 And for the wasm baseline compiler (tier 1) in https://searchfox.org/mozilla-central/source/js/src/wasm/WasmBaselineCompile.cpp#3990 Regarding calls to function table checks: (i.e. checking that we're using a function index that's in bound of the function table) There's no way to disable those either. They're generated in MacroAssembler::wasmCallIndirect, so you can either pass `boundsCheck` = false to all callers of this function, or just tweak the behavior there: https://searchfox.org/mozilla-central/source/js/src/jit/ MacroAssembler.cpp#3245 The v8 flag wasm_no_stack_checks lets me guess this also includes stack limit checks, those would be disabled there: - for Ion/Baseline, the checks in this block: https://searchfox.org/mozilla-central/source/js/src/wasm/WasmFrameIter.cpp#520 - for Baseline: by returning early in https://searchfox.org/mozilla-central/source/js/src/wasm/WasmBaselineCompile.cpp#1208 Good luck! Out of curiosity, if you can disclose this information, I'd be curious to know what your research project is about. Feel free to follow up in private if you prefer. Cheers, Benjamin On Wed, Feb 21, 2018 at 4:43 PM, <[email protected]> wrote: > On Tuesday, January 9, 2018 at 2:12:34 AM UTC+5:30, Abhinav Jangda wrote: > > Hello Everyone, > > > > I am looking for an option in SpiderMonkey to turn off the bounds check > > emitted by JIT compiler while compiling Web Assembly code, something like > > "wasm_no_bounds_check" and "wasm_no_stack_checks" in Google V8. > > Unfortunately, I couldn't find any such options either using "js --help" > > for SpiderMonkey JS Shell version JavaScript-C59.0a1 or "about:config" > > options in Mozilla Firefox 57.0.4. Can anyone please help with turning > the > > checks off, this is required for a research project. > > > > Thank You, > > > > Abhinav Jangda > > see this > _______________________________________________ > dev-tech-js-engine mailing list > [email protected] > https://lists.mozilla.org/listinfo/dev-tech-js-engine >