blob: 4b92b6773c0a19285a768879c507f5778553d619 [file] [log] [blame]
import * as assert from '../assert.js';
import { instantiate } from "../wabt-wrapper.js";
let wat = `
(module
(import "env" "memory" (memory $mem0 1 7 shared))
(func (export "run_copy")
(memory.copy (i32.const 12) (i32.const 0) (i32.const 12))
)
(func (export "get") (param $address i32) (result i32)
(i32.load (local.get $address))
)
)
`;
async function test() {
let memory = new WebAssembly.Memory({initial: 1, maximum: 7, shared: true});
let memoryView = new Uint32Array(memory.buffer);
memoryView[0] = 37;
memoryView[1] = 42;
memoryView[2] = 73;
const instance = await instantiate(wat, {env: {"memory": memory}}, {reference_types: true});
const sizeOfUint32InBytes = 4;
assert.eq(instance.exports.get(0 * sizeOfUint32InBytes), 37);
assert.eq(instance.exports.get(1 * sizeOfUint32InBytes), 42);
assert.eq(instance.exports.get(2 * sizeOfUint32InBytes), 73);
instance.exports.run_copy();
assert.eq(instance.exports.get(3 * sizeOfUint32InBytes), 37);
assert.eq(instance.exports.get(4 * sizeOfUint32InBytes), 42);
assert.eq(instance.exports.get(5 * sizeOfUint32InBytes), 73);
}
assert.asyncTest(test());