if (!this.SharedArrayBuffer) quit(0); function loadModule_uint16(stdlib, foreign, heap) { "use asm"; var atomic_add = stdlib.Atomics.add; var atomic_sub = stdlib.Atomics.sub; var atomic_and = stdlib.Atomics.and; var atomic_or = stdlib.Atomics.or; var atomic_xor = stdlib.Atomics.xor; var i16a = new stdlib.Uint16Array(heap); function do_add_i(i) { i = i|0; var v = 0; v = atomic_add(i16a, i>>1, 0x3333)|0; } function do_sub_i(i) { i = i|0; var v = 0; v = atomic_sub(i16a, i>>1, 0x3333)|0; } function do_and_i(i) { i = i|0; var v = 0; v = atomic_and(i16a, i>>1, 0x3333)|0; } function do_or_i(i) { i = i|0; var v = 0; v = atomic_or(i16a, i>>1, 0x3333)|0; } function do_xor_i(i) { i = i|0; var v = 0; v = atomic_xor(i16a, i>>1, 0x3333)|0; } return { add_i: do_add_i, sub_i: do_sub_i, and_i: do_and_i, or_i: do_or_i, xor_i: do_xor_i }; } function test_uint16(heap) { var i16m = loadModule_uint16(this, {}, heap); var size = Uint16Array.BYTES_PER_ELEMENT; i16m.add_i(size*40) i16m.sub_i(size*40) i16m.and_i(size*40) i16m.or_i(size*40) i16m.xor_i(size*40) } var heap = new SharedArrayBuffer(65536); test_uint16(heap);