Chromium Code Reviews| Index: test/mjsunit/wasm/calls.js |
| diff --git a/test/mjsunit/wasm/calls.js b/test/mjsunit/wasm/calls.js |
| index ad895f98d35150e2aa40864c9b782e2afc0dbf74..17d8af3a8949162ba7eac0be6ed6bbf729927cd5 100644 |
| --- a/test/mjsunit/wasm/calls.js |
| +++ b/test/mjsunit/wasm/calls.js |
| @@ -5,141 +5,98 @@ |
| // 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, 65536); |
|
ahaas
2016/03/07 18:36:37
use kMemSize here (or introduce it if it does not
titzer
2016/03/07 19:11:05
Done.
|
| + |
| + // 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); |
| + builder.addMemory(2, 2, true); |
|
ahaas
2016/03/07 18:36:38
Are these "2"s here related to the "2" below in as
titzer
2016/03/07 19:11:05
Done.
|
| + builder.addFunction("nop", [kAstStmt]) |
| + .addBody([kExprNop]) |
| + .exportFunc(); |
| + |
| + var module = builder.instantiate(); |
| + assertModule(module, 65536 * 2); |
| + |
| + 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(); |
| + |
| + builder.addMemory(3, 3, true); |
|
ahaas
2016/03/07 18:36:37
Same as above.
titzer
2016/03/07 19:11:05
Done.
|
| + builder.addFunction("flt", [kAstI32, kAstF64, kAstF64]) |
| + .addBody([ |
| + kExprF64Lt, // -- |
| + kExprGetLocal, 0, // -- |
| + kExprGetLocal, 1]) // -- |
| + .exportFunc(); |
| + |
| + var module = builder.instantiate(); |
| + assertModule(module, 3 * 65536); |
| + |
| + var flt = assertFunction(module, "flt"); |
| + assertEquals(1, flt(-2, -1)); |
| + assertEquals(0, flt(7.3, 7.1)); |
| + assertEquals(1, flt(7.1, 7.3)); |
| })(); |