blob: 93ab6b95874cbceeea0cc1e838190a08d569990b [file] [log] [blame]
// Check gating of shared memory features in asm.js (bug 1171540,
// bug 1231624).
//
// In asm.js, importing any atomic is a signal that shared memory is
// being used. If an atomic is imported, and if shared memory is
// disabled in the build or in the run then a type error should be
// signaled for the module at the end of the declaration section and
// the module should not be an asm.js module.
if (!this.SharedArrayBuffer || !isAsmJSCompilationAvailable())
quit(0);
// This code is not run, we only care whether it compiles as asm.js.
function module_a(stdlib, foreign, heap) {
"use asm";
var i32a = new stdlib.Int32Array(heap);
var ld = stdlib.Atomics.load;
// There should be a type error around this line if shared memory
// is not enabled.
function do_load() {
var v = 0;
v = ld(i32a, 0)|0; // It's not actually necessary to use the atomic op
return v|0;
}
return { load: do_load };
}
assertEq(isAsmJSModule(module_a), !!this.SharedArrayBuffer);