--- /dev/null
+{
+ "scripts": {
+ "pretest": "tsc -p test/tsconfig.json",
+ "test": "node --expose-wasm test/wasm.js"
+ }
+}
let source = new Uint8Array(1);
//Table
let table = new WebAssembly.Table({ element: "anyfunc", initial: 1, maximum: 10 });
-console.log(table.length);
-table.get(0)();
+console.log(`table.length=${table.length}`);
+console.log(`table.get(0)=${table.get(0)}`);
table.set(0, function () {
});
table.grow(1);
//Memory
-let memory = new WebAssembly.Memory({ initial: 2, maximum: 256 });
-console.log(memory.grow(512));
+let memory = new WebAssembly.Memory({ initial: 2, maximum: 4 });
+console.log(`memory.grow(8)=${memory.grow(8)}`);
let u8 = new Uint8Array(memory.buffer);
-console.log(u8);
+u8[0] = 1;
+u8[1] = 2;
+console.log(`u8[0]=${u8[0]}`);
+console.log(`u8[1]=${u8[1]}`);
//Module
-let module = new WebAssembly.Module(source);
+let wasmModule = new WebAssembly.Module(source);
//customSections
-let nameSections = WebAssembly.Module.customSections(module, "name");
+let nameSections = WebAssembly.Module.customSections(wasmModule, "name");
if (nameSections.length != 0) {
console.log("Module contains a name section");
console.log(nameSections[0]);
}
//exports
-console.log(WebAssembly.Module.exports(module).length);
-console.log(WebAssembly.Module.exports(module)[0].name);
-console.log(WebAssembly.Module.exports(module)[0].kind);
+console.log(WebAssembly.Module.exports(wasmModule).length);
+console.log(WebAssembly.Module.exports(wasmModule)[0].name);
+console.log(WebAssembly.Module.exports(wasmModule)[0].kind);
//imports
-console.log(WebAssembly.Module.imports(module).length);
-console.log(WebAssembly.Module.imports(module)[0].module);
-console.log(WebAssembly.Module.imports(module)[0].name);
-console.log(WebAssembly.Module.imports(module)[0].kind);
+console.log(WebAssembly.Module.imports(wasmModule).length);
+console.log(WebAssembly.Module.imports(wasmModule)[0].module);
+console.log(WebAssembly.Module.imports(wasmModule)[0].name);
+console.log(WebAssembly.Module.imports(wasmModule)[0].kind);
//Instance
-let instance = new WebAssembly.Instance(module);
+let instance = new WebAssembly.Instance(wasmModule);
console.log(instance.exports.exported_func());
let bytes = new ArrayBuffer(1); //dummy bytes
//validate
let valid = WebAssembly.validate(bytes);
-console.log("The given bytes are " + (valid ? "" : "not ") + "a valid wasm module");
+console.log("The given bytes are " + (valid ? "" : "not ") + "a valid wasm wasmModule");
//compile
WebAssembly.compile(bytes).then((module) => {
- console.log(module);
+ console.log(wasmModule);
});
//instantiate
//Primary overload — taking wasm binary code
console.log(result.module);
console.log(result.instance);
});
-//Secondary overload — taking a module object instance
-WebAssembly.instantiate(module).then((instance) => {
+//Secondary overload — taking a wasmModule object instance
+WebAssembly.instantiate(wasmModule).then((instance) => {
console.log(instance);
});
//Table
let table = new WebAssembly.Table({element: "anyfunc", initial: 1, maximum: 10});
-console.log(table.length);
-table.get(0)();
+console.log(`table.length=${table.length}`);
+console.log(`table.get(0)=${table.get(0)}`);
table.set(0, function () {
});
table.grow(1);
//Memory
-let memory = new WebAssembly.Memory({initial: 2, maximum: 256});
-console.log(memory.grow(512));
+let memory = new WebAssembly.Memory({initial: 2, maximum: 4});
+console.log(`memory.grow(8)=${memory.grow(8)}`);
let u8 = new Uint8Array(memory.buffer);
-console.log(u8);
+u8[0] = 1;
+u8[1] = 2;
+console.log(`u8[0]=${u8[0]}`);
+console.log(`u8[1]=${u8[1]}`);
//Module
-let module = new WebAssembly.Module(source);
+let wasmModule = new WebAssembly.Module(source);
//customSections
-let nameSections = WebAssembly.Module.customSections(module, "name");
+let nameSections = WebAssembly.Module.customSections(wasmModule, "name");
if (nameSections.length != 0) {
console.log("Module contains a name section");
console.log(nameSections[0]);
}
//exports
-console.log(WebAssembly.Module.exports(module).length);
-console.log(WebAssembly.Module.exports(module)[0].name);
-console.log(WebAssembly.Module.exports(module)[0].kind);
+console.log(WebAssembly.Module.exports(wasmModule).length);
+console.log(WebAssembly.Module.exports(wasmModule)[0].name);
+console.log(WebAssembly.Module.exports(wasmModule)[0].kind);
//imports
-console.log(WebAssembly.Module.imports(module).length);
-console.log(WebAssembly.Module.imports(module)[0].module);
-console.log(WebAssembly.Module.imports(module)[0].name);
-console.log(WebAssembly.Module.imports(module)[0].kind);
+console.log(WebAssembly.Module.imports(wasmModule).length);
+console.log(WebAssembly.Module.imports(wasmModule)[0].module);
+console.log(WebAssembly.Module.imports(wasmModule)[0].name);
+console.log(WebAssembly.Module.imports(wasmModule)[0].kind);
//Instance
-let instance = new WebAssembly.Instance(module);
+let instance = new WebAssembly.Instance(wasmModule);
console.log(instance.exports.exported_func());
let bytes = new ArrayBuffer(1);//dummy bytes
//validate
let valid = WebAssembly.validate(bytes);
-console.log("The given bytes are " + (valid ? "" : "not ") + "a valid wasm module");
+console.log("The given bytes are " + (valid ? "" : "not ") + "a valid wasm wasmModule");
//compile
WebAssembly.compile(bytes).then((module: WebAssembly.Module) => {
- console.log(module);
+ console.log(wasmModule);
});
//instantiate
console.log(result.module);
console.log(result.instance);
});
-//Secondary overload — taking a module object instance
-WebAssembly.instantiate(module).then((instance: WebAssembly.Instance) => {
+//Secondary overload — taking a wasmModule object instance
+WebAssembly.instantiate(wasmModule).then((instance: WebAssembly.Instance) => {
console.log(instance);
});