Chromium Code Reviews| Index: test/mjsunit/wasm/grow-memory.js |
| diff --git a/test/mjsunit/wasm/grow-memory.js b/test/mjsunit/wasm/grow-memory.js |
| index 93db651c1bb49633800585c6382ae071e4934c7b..4683c9ed699f3b51a03c4247fbfa931e41b85bdf 100644 |
| --- a/test/mjsunit/wasm/grow-memory.js |
| +++ b/test/mjsunit/wasm/grow-memory.js |
| @@ -32,7 +32,7 @@ function testGrowMemoryReadWrite() { |
| function poke(value) { return module.exports.store(offset, value); } |
| function growMem(pages) { return module.exports.grow_memory(pages); } |
| - for(offset = 0; offset <= (kPageSize - 4); offset++) { |
| + for(offset = 0; offset <= (kPageSize - 4); offset+=4) { |
|
ahaas
2016/09/08 12:23:34
For this test it is actually better to write to ev
gdeepti
2016/09/08 22:44:50
It is better to test at every offset, but introduc
|
| poke(20); |
| assertEquals(20, peek()); |
| } |
| @@ -43,7 +43,7 @@ function testGrowMemoryReadWrite() { |
| assertEquals(1, growMem(3)); |
| - for (offset = kPageSize; offset <= 4*kPageSize -4; offset++) { |
| + for (offset = kPageSize; offset <= 4*kPageSize -4; offset+=4) { |
|
ahaas
2016/09/08 12:23:34
same here.
|
| poke(20); |
| assertEquals(20, peek()); |
| } |
| @@ -54,11 +54,11 @@ function testGrowMemoryReadWrite() { |
| assertEquals(4, growMem(15)); |
| - for (offset = 4*kPageSize - 3; offset <= 4*kPageSize + 4; offset++) { |
| + for (offset = 4*kPageSize - 3; offset <= 4*kPageSize + 4; offset+=4) { |
|
ahaas
2016/09/08 12:23:34
same here.
|
| poke(20); |
| assertEquals(20, peek()); |
| } |
| - for (offset = 19*kPageSize - 10; offset <= 19*kPageSize - 4; offset++) { |
| + for (offset = 19*kPageSize - 10; offset <= 19*kPageSize - 4; offset+=4) { |
|
ahaas
2016/09/08 12:23:34
same here.
|
| poke(20); |
| assertEquals(20, peek()); |
| } |
| @@ -83,7 +83,7 @@ function testGrowMemoryZeroInitialSize() { |
| assertEquals(0, growMem(1)); |
| - for(offset = 0; offset <= kPageSize - 4; offset++) { |
| + for(offset = 0; offset <= kPageSize - 4; offset+=4) { |
|
ahaas
2016/09/08 12:23:34
same here.
gdeepti
2016/09/08 22:44:50
Changing this back to the way it was for now.
|
| poke(20); |
| assertEquals(20, peek()); |
| } |
| @@ -144,3 +144,88 @@ function testGrowMemoryCurrentMemory() { |
| } |
| testGrowMemoryCurrentMemory(); |
| + |
| +function testGrowMemoryPreservesDataMemOp32() { |
| + var builder = genGrowMemoryBuilder(); |
| + builder.addMemory(1, 1, false); |
| + var module = builder.instantiate(); |
| + var offset, val; |
| + function peek() { return module.exports.load(offset); } |
| + function poke(value) { return module.exports.store(offset, value); } |
| + function growMem(pages) { return module.exports.grow_memory(pages); } |
| + |
| + for(offset = 0; offset <= (kPageSize - 4); offset+=4) { |
| + poke(100000 - offset); |
| + assertEquals(100000 - offset, peek()); |
| + } |
| + |
| + assertEquals(1, growMem(3)); |
| + |
| + for(offset = 0; offset <= (kPageSize - 4); offset+=4) { |
| + assertEquals(100000 - offset, peek()); |
| + } |
| +} |
| + |
| +testGrowMemoryPreservesDataMemOp32(); |
| + |
| +function testGrowMemoryPreservesDataMemOp16() { |
| + var builder = genGrowMemoryBuilder(); |
| + builder.addMemory(1, 1, false); |
| + builder.addFunction("load16", kSig_i_i) |
| + .addBody([kExprGetLocal, 0, kExprI32LoadMem16U, 0, 0]) |
| + .exportFunc(); |
| + builder.addFunction("store16", kSig_i_ii) |
| + .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem16, 0, 0]) |
| + .exportFunc(); |
| + var module = builder.instantiate(); |
| + var offset, val; |
| + function peek() { return module.exports.load16(offset); } |
| + function poke(value) { return module.exports.store16(offset, value); } |
| + function growMem(pages) { return module.exports.grow_memory(pages); } |
| + |
| + for(offset = 0; offset <= (kPageSize - 2); offset+=2) { |
| + poke(65535 - offset); |
| + assertEquals(65535 - offset, peek()); |
| + } |
| + |
| + assertEquals(1, growMem(3)); |
| + |
| + for(offset = 0; offset <= (kPageSize - 2); offset+=2) { |
| + assertEquals(65535 - offset, peek()); |
| + } |
| +} |
| + |
| +testGrowMemoryPreservesDataMemOp16(); |
| + |
| +function testGrowMemoryPreservesDataMemOp8() { |
| + var builder = genGrowMemoryBuilder(); |
| + builder.addMemory(1, 1, false); |
| + builder.addFunction("load8", kSig_i_i) |
| + .addBody([kExprGetLocal, 0, kExprI32LoadMem8U, 0, 0]) |
| + .exportFunc(); |
| + builder.addFunction("store8", kSig_i_ii) |
| + .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem8, 0, 0]) |
| + .exportFunc(); |
| + var module = builder.instantiate(); |
| + var offset, val = 0; |
| + function peek() { return module.exports.load8(offset); } |
| + function poke(value) { return module.exports.store8(offset, value); } |
| + function growMem(pages) { return module.exports.grow_memory(pages); } |
| + |
| + for(offset = 0; offset <= (kPageSize - 1); offset++, val++) { |
| + poke(val); |
| + assertEquals(val, peek()); |
| + if (val == 255) val = 0; |
| + } |
| + |
| + assertEquals(1, growMem(3)); |
| + |
| + val = 0; |
| + |
| + for(offset = 0; offset <= (kPageSize - 1); offset++, val++) { |
| + assertEquals(val, peek()); |
| + if (val == 255) val = 0; |
| + } |
| +} |
| + |
| +testGrowMemoryPreservesDataMemOp8(); |