Index: test/mjsunit/wasm/import-memory.js |
diff --git a/test/mjsunit/wasm/import-memory.js b/test/mjsunit/wasm/import-memory.js |
index 3b70332f97bc5eb95d2dbd81135df3a89204d0c2..845da91d1d17bca6545d322edaeb05ef6ed9f49e 100644 |
--- a/test/mjsunit/wasm/import-memory.js |
+++ b/test/mjsunit/wasm/import-memory.js |
@@ -39,6 +39,7 @@ |
let instance = builder.instantiate({garg: memory}); |
assertSame(memory, instance.exports.daggle); |
})(); |
+ |
(function TestImportExport() { |
print("TestImportExport"); |
@@ -228,141 +229,3 @@ |
} |
assertEquals(-1, instance.exports.grow(1)); |
})(); |
- |
-(function TestMemoryGrowWebAssemblyInstances() { |
- print("TestMemoryGrowWebAssemblyInstances"); |
- let memory = new WebAssembly.Memory({initial: 1, maximum: 15}); |
- var builder = new WasmModuleBuilder(); |
- builder.addImportedMemory("imported_mem"); |
- builder.addFunction("mem_size", kSig_i_v) |
- .addBody([kExprMemorySize, kMemoryZero]) |
- .exportAs("mem_size"); |
- builder.addFunction("grow", kSig_i_i) |
- .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) |
- .exportFunc(); |
- var module = new WebAssembly.Module(builder.toBuffer()); |
- var instances = []; |
- for (var i = 0; i < 6; i++) { |
- instances.push(new WebAssembly.Instance(module, {imported_mem: memory})); |
- } |
- function verify_mem_size(expected_pages) { |
- assertEquals(expected_pages*kPageSize, |
- memory.buffer.byteLength); |
- for (var i = 0; i < 6; i++) { |
- assertEquals(expected_pages, instances[i].exports.mem_size()); |
- } |
- } |
- |
- // Verify initial memory size |
- verify_mem_size(1); |
- |
- // Verify memory size with interleaving calls to Memory.grow, |
- // GrowMemory opcode. |
- var current_mem_size = 1; |
- for (var i = 0; i < 5; i++) { |
- function grow(pages) { return instances[i].exports.grow(pages); } |
- assertEquals(current_mem_size, memory.grow(1)); |
- verify_mem_size(++current_mem_size); |
- assertEquals(current_mem_size, instances[i].exports.grow(1)); |
- verify_mem_size(++current_mem_size); |
- } |
- |
- assertThrows(() => memory.grow(5)); |
-})(); |
- |
-(function TestImportedMemoryGrowMultipleInstances() { |
- print("TestImportMemoryMultipleInstances"); |
- let memory = new WebAssembly.Memory({initial: 5, maximum: 100}); |
- var builder = new WasmModuleBuilder(); |
- builder.addImportedMemory("imported_mem"); |
- builder.addFunction("mem_size", kSig_i_v) |
- .addBody([kExprMemorySize, kMemoryZero]) |
- .exportFunc(); |
- builder.addFunction("grow", kSig_i_i) |
- .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) |
- .exportFunc(); |
- var instances = []; |
- for (var i = 0; i < 5; i++) { |
- instances.push(builder.instantiate({imported_mem: memory})); |
- } |
- function grow_instance_0(pages) { return instances[0].exports.grow(pages); } |
- function grow_instance_1(pages) { return instances[1].exports.grow(pages); } |
- function grow_instance_2(pages) { return instances[2].exports.grow(pages); } |
- function grow_instance_3(pages) { return instances[3].exports.grow(pages); } |
- function grow_instance_4(pages) { return instances[4].exports.grow(pages); } |
- |
- function verify_mem_size(expected_pages) { |
- assertEquals(expected_pages*kPageSize, memory.buffer.byteLength); |
- for (var i = 0; i < 5; i++) { |
- assertEquals(expected_pages, instances[i].exports.mem_size()); |
- } |
- } |
- |
- // Verify initial memory size |
- verify_mem_size(5); |
- |
- // Grow instance memory and buffer memory out of order and verify memory is |
- // updated correctly. |
- assertEquals(5, grow_instance_0(7)); |
- verify_mem_size(12); |
- |
- assertEquals(12, memory.grow(4)); |
- verify_mem_size(16); |
- |
- assertEquals(16, grow_instance_4(1)); |
- verify_mem_size(17); |
- |
- assertEquals(17, grow_instance_1(6)); |
- verify_mem_size(23); |
- |
- assertEquals(23, grow_instance_3(2)); |
- verify_mem_size(25); |
- |
- assertEquals(25, memory.grow(10)); |
- verify_mem_size(35); |
- |
- assertEquals(35, grow_instance_2(15)); |
- verify_mem_size(50); |
- assertThrows(() => memory.grow(51)); |
-})(); |
- |
-(function TestExportImportedMemoryGrowMultipleInstances() { |
- // TODO(gdeepti):Exported memory objects currently do not take max_size |
- // into account so this can grow past the maximum specified in the exported |
- // memory object. Assert that growing past maximum for exported objects fails. |
- print("TestExportImportedMemoryGrowMultipleInstances"); |
- var instance; |
- { |
- let builder = new WasmModuleBuilder(); |
- builder.addMemory(1, 11, true); |
- builder.exportMemoryAs("exported_mem"); |
- builder.addFunction("mem_size", kSig_i_v) |
- .addBody([kExprMemorySize, kMemoryZero]) |
- .exportFunc(); |
- instance = builder.instantiate(); |
- } |
- var builder = new WasmModuleBuilder(); |
- builder.addImportedMemory("imported_mem"); |
- builder.addFunction("mem_size", kSig_i_v) |
- .addBody([kExprMemorySize, kMemoryZero]) |
- .exportFunc(); |
- builder.addFunction("grow", kSig_i_i) |
- .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) |
- .exportFunc(); |
- var instances = []; |
- for (var i = 0; i < 10; i++) { |
- instances.push(builder.instantiate({ |
- imported_mem: instance.exports.exported_mem})); |
- } |
- function verify_mem_size(expected_pages) { |
- for (var i = 0; i < 10; i++) { |
- assertEquals(expected_pages, instances[i].exports.mem_size()); |
- } |
- } |
- var current_mem_size = 1; |
- for (var i = 0; i < 10; i++) { |
- function grow(pages) { return instances[i].exports.grow(pages); } |
- assertEquals(current_mem_size, instances[i].exports.grow(1)); |
- verify_mem_size(++current_mem_size); |
- } |
-})(); |