| Index: test/mjsunit/wasm/calls.js
|
| diff --git a/test/mjsunit/wasm/calls.js b/test/mjsunit/wasm/calls.js
|
| index ad895f98d35150e2aa40864c9b782e2afc0dbf74..0acf859eaa05e836906e2560d565738a8c479841 100644
|
| --- a/test/mjsunit/wasm/calls.js
|
| +++ b/test/mjsunit/wasm/calls.js
|
| @@ -5,141 +5,100 @@
|
| // Flags: --expose-wasm
|
|
|
| load("test/mjsunit/wasm/wasm-constants.js");
|
| +load("test/mjsunit/wasm/wasm-module-builder.js");
|
| +
|
| +function assertModule(module, memsize) {
|
| + // Check the module exists.
|
| + assertFalse(module === undefined);
|
| + assertFalse(module === null);
|
| + assertFalse(module === 0);
|
| + assertEquals("object", typeof module);
|
| +
|
| + // Check the memory is an ArrayBuffer.
|
| + var mem = module.memory;
|
| + assertFalse(mem === undefined);
|
| + assertFalse(mem === null);
|
| + assertFalse(mem === 0);
|
| + assertEquals("object", typeof mem);
|
| + assertTrue(mem instanceof ArrayBuffer);
|
| + for (var i = 0; i < 4; i++) {
|
| + module.memory = 0; // should be ignored
|
| + assertEquals(mem, module.memory);
|
| + }
|
| +
|
| + assertEquals(memsize, module.memory.byteLength);
|
| +}
|
|
|
| -var module = (function () {
|
| - var kBodySize = 5;
|
| - var kNameOffset = kHeaderSize + 21 + kBodySize + 1;
|
| -
|
| - return _WASMEXP_.instantiateModule(bytesWithHeader(
|
| - // -- memory
|
| - kDeclMemory,
|
| - 1, 1, 1,
|
| - // -- signatures
|
| - kDeclSignatures, 1,
|
| - 2, kAstI32, kAstI32, kAstI32, // int, int -> int
|
| - // -- functions
|
| - kDeclFunctions, 1,
|
| - kDeclFunctionName | kDeclFunctionExport,
|
| - 0, 0,
|
| - kNameOffset, 0, 0, 0, // name offset
|
| - kBodySize, 0,
|
| - // -- body
|
| - kExprI32Sub, // --
|
| - kExprGetLocal, 0, // --
|
| - kExprGetLocal, 1, // --
|
| - kDeclEnd,
|
| - 's', 'u', 'b', 0 // name
|
| - ));
|
| -})();
|
| +function assertFunction(module, func) {
|
| + assertEquals("object", typeof module.exports);
|
| +
|
| + var exp = module.exports[func];
|
| + assertFalse(exp === undefined);
|
| + assertFalse(exp === null);
|
| + assertFalse(exp === 0);
|
| + assertEquals("function", typeof exp);
|
|
|
| -// Check the module exists.
|
| -assertFalse(module === undefined);
|
| -assertFalse(module === null);
|
| -assertFalse(module === 0);
|
| -assertEquals("object", typeof module);
|
| -
|
| -// Check the memory is an ArrayBuffer.
|
| -var mem = module.memory;
|
| -assertFalse(mem === undefined);
|
| -assertFalse(mem === null);
|
| -assertFalse(mem === 0);
|
| -assertEquals("object", typeof mem);
|
| -assertTrue(mem instanceof ArrayBuffer);
|
| -for (var i = 0; i < 4; i++) {
|
| - module.memory = 0; // should be ignored
|
| - assertEquals(mem, module.memory);
|
| + return exp;
|
| }
|
|
|
| -assertEquals(65536, module.memory.byteLength);
|
| -
|
| -// Check the properties of the sub function.
|
| -assertEquals("function", typeof module.sub);
|
| -
|
| -assertEquals(-55, module.sub(33, 88));
|
| -assertEquals(-55555, module.sub(33333, 88888));
|
| -assertEquals(-5555555, module.sub(3333333, 8888888));
|
| -
|
| -
|
| -var module = (function() {
|
| - var kBodySize = 1;
|
| - var kNameOffset2 = kHeaderSize + 19 + kBodySize + 1;
|
| -
|
| - return _WASMEXP_.instantiateModule(bytesWithHeader(
|
| - // -- memory
|
| - kDeclMemory,
|
| - 1, 1, 1,
|
| - // -- signatures
|
| - kDeclSignatures, 1,
|
| - 0, kAstStmt, // signature: void -> void
|
| - // -- functions
|
| - kDeclFunctions, 1,
|
| - kDeclFunctionName | kDeclFunctionExport,
|
| - 0, 0, // signature index
|
| - kNameOffset2, 0, 0, 0, // name offset
|
| - kBodySize, 0,
|
| - kExprNop, // body
|
| - kDeclEnd,
|
| - 'n', 'o', 'p', 0 // name
|
| - ));
|
| +(function SubTest() {
|
| +
|
| + var builder = new WasmModuleBuilder();
|
| +
|
| + builder.addMemory(1, 1, true);
|
| + builder.addFunction("sub", [kAstI32, kAstI32, kAstI32])
|
| + .addBody([
|
| + kExprI32Sub, // --
|
| + kExprGetLocal, 0, // --
|
| + kExprGetLocal, 1]) // --
|
| + .exportFunc()
|
| +
|
| + var module = builder.instantiate();
|
| + assertModule(module, kPageSize);
|
| +
|
| + // Check the properties of the sub function.
|
| + var sub = assertFunction(module, "sub");
|
| + assertEquals(-55, sub(33, 88));
|
| + assertEquals(-55555, sub(33333, 88888));
|
| + assertEquals(-5555555, sub(3333333, 8888888));
|
| })();
|
|
|
| -// Check the module exists.
|
| -assertFalse(module === undefined);
|
| -assertFalse(module === null);
|
| -assertFalse(module === 0);
|
| -assertEquals("object", typeof module);
|
| -
|
| -// Check the memory is an ArrayBuffer.
|
| -var mem = module.memory;
|
| -assertFalse(mem === undefined);
|
| -assertFalse(mem === null);
|
| -assertFalse(mem === 0);
|
| -assertEquals("object", typeof mem);
|
| -assertTrue(mem instanceof ArrayBuffer);
|
| -for (var i = 0; i < 4; i++) {
|
| - module.memory = 0; // should be ignored
|
| - assertEquals(mem, module.memory);
|
| -}
|
|
|
| -assertEquals(65536, module.memory.byteLength);
|
| +(function NopTest() {
|
| +
|
| + var builder = new WasmModuleBuilder();
|
|
|
| -// Check the properties of the sub function.
|
| -assertFalse(module.nop === undefined);
|
| -assertFalse(module.nop === null);
|
| -assertFalse(module.nop === 0);
|
| -assertEquals("function", typeof module.nop);
|
| + var kPages = 2;
|
| + builder.addMemory(kPages, kPages, true);
|
| + builder.addFunction("nop", [kAstStmt])
|
| + .addBody([kExprNop])
|
| + .exportFunc();
|
| +
|
| + var module = builder.instantiate();
|
| + assertModule(module, kPageSize * kPages);
|
| +
|
| + var nop = assertFunction(module, "nop");
|
| + assertEquals(undefined, nop());
|
| +})();
|
|
|
| -assertEquals(undefined, module.nop());
|
|
|
| (function testLt() {
|
| - var kBodySize = 5;
|
| - var kNameOffset = kHeaderSize + 21 + kBodySize + 1;
|
| -
|
| - var data = bytesWithHeader(
|
| - // -- memory
|
| - kDeclMemory,
|
| - 1, 1, 1,
|
| - // -- signatures
|
| - kDeclSignatures, 1,
|
| - 2, kAstI32, kAstF64, kAstF64, // (f64,f64)->int
|
| - // -- functions
|
| - kDeclFunctions, 1,
|
| - kDeclFunctionName | kDeclFunctionExport,
|
| - 0, 0, // signature index
|
| - kNameOffset, 0, 0, 0, // name offset
|
| - kBodySize, 0,
|
| - // -- body
|
| - kExprF64Lt, // --
|
| - kExprGetLocal, 0, // --
|
| - kExprGetLocal, 1, // --
|
| - kDeclEnd,
|
| - 'f', 'l', 't', 0 // name
|
| - );
|
| -
|
| - var module = _WASMEXP_.instantiateModule(data);
|
| -
|
| - assertEquals("function", typeof module.flt);
|
| - assertEquals(1, module.flt(-2, -1));
|
| - assertEquals(0, module.flt(7.3, 7.1));
|
| - assertEquals(1, module.flt(7.1, 7.3));
|
| + var builder = new WasmModuleBuilder();
|
| +
|
| + var kPages = 3;
|
| + builder.addMemory(kPages, kPages, true);
|
| + builder.addFunction("flt", [kAstI32, kAstF64, kAstF64])
|
| + .addBody([
|
| + kExprF64Lt, // --
|
| + kExprGetLocal, 0, // --
|
| + kExprGetLocal, 1]) // --
|
| + .exportFunc();
|
| +
|
| + var module = builder.instantiate();
|
| + assertModule(module, kPageSize * kPages);
|
| +
|
| + var flt = assertFunction(module, "flt");
|
| + assertEquals(1, flt(-2, -1));
|
| + assertEquals(0, flt(7.3, 7.1));
|
| + assertEquals(1, flt(7.1, 7.3));
|
| })();
|
|
|