multimath
Version:
Core to create fast image math in WebAssembly and JS.
38 lines (26 loc) • 1.13 kB
JavaScript
// Detect WebAssembly support.
// - Check global WebAssembly object
// - Try to load simple module (can be disabled via CSP)
//
;
var wa;
module.exports = function hasWebAssembly() {
// use cache if called before;
if (typeof wa !== 'undefined') return wa;
wa = false;
if (typeof WebAssembly === 'undefined') return wa;
// If WebAssenbly is disabled, code can throw on compile
try {
// https://github.com/brion/min-wasm-fail/blob/master/min-wasm-fail.in.js
// Additional check that WA internals are correct
/* eslint-disable comma-spacing, max-len */
var bin = new Uint8Array([ 0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11 ]);
var module = new WebAssembly.Module(bin);
var instance = new WebAssembly.Instance(module, {});
// test storing to and loading from a non-zero location via a parameter.
// Safari on iOS 11.2.5 returns 0 unexpectedly at non-zero locations
if (instance.exports.test(4) !== 0) wa = true;
return wa;
} catch (__) {}
return wa;
};