MCPcopy Create free account
hub / github.com/nodejs/node / testMemoryGrowReadWriteBase

Function testMemoryGrowReadWriteBase

deps/v8/test/mjsunit/wasm/grow-memory.js:46–110  ·  view source on GitHub ↗
(size, load_fn, store_fn)

Source from the content-addressed store, hash-verified

44
45
46function testMemoryGrowReadWriteBase(size, load_fn, store_fn) {
47 // size is the number of bytes for load and stores.
48 var builder = genMemoryGrowBuilder();
49 builder.addMemory(1, undefined);
50 var module = builder.instantiate();
51 var offset;
52 var load = module.exports[load_fn];
53 var store = module.exports[store_fn];
54 function peek() { return load(offset); }
55 function poke(value) { return store(offset, value); }
56 function growMem(pages) { return module.exports.grow_memory(pages); }
57
58 // Instead of checking every n-th offset, check the first 5.
59 for(offset = 0; offset <= (4*size); offset+=size) {
60 poke(20);
61 assertEquals(20, peek());
62 }
63 for (offset = kPageSize - (size - 1); offset < kPageSize + size; offset++) {
64 assertTraps(kTrapMemOutOfBounds, poke);
65 assertTraps(kTrapMemOutOfBounds, peek);
66 }
67
68 assertEquals(1, growMem(3));
69
70 for (let n = 1; n <= 3; n++) {
71 for (offset = n * kPageSize - 5 * size; offset <= n * kPageSize + 4 * size;
72 offset += size) {
73 // Check the 5 offsets to the before and after the n-th page.
74 // page n-1 page n page n+1
75 // +---- ... ------------+---------- ... +------ ...
76 // | | | ... | | | | | | | | | | | | ... | | | | ...
77 // <+> ^ ^
78 // | first offset last offset
79 // +-> size bytes
80 poke(20);
81 assertEquals(20, peek());
82 }
83 }
84
85 // Check the last 5 valid offsets of the last page.
86 for (offset = 4*kPageSize-size-(4*size); offset <= 4*kPageSize -size; offset+=size) {
87 poke(20);
88 assertEquals(20, peek());
89 }
90
91 for (offset = 4*kPageSize - (size-1); offset < 4*kPageSize + size; offset++) {
92 assertTraps(kTrapMemOutOfBounds, poke);
93 assertTraps(kTrapMemOutOfBounds, peek);
94 }
95
96 assertEquals(4, growMem(15));
97
98 for (offset = 4*kPageSize - (size-1); offset <= 4*kPageSize + size; offset+=size) {
99 poke(20);
100 assertEquals(20, peek());
101 }
102 for (offset = 19*kPageSize - 10; offset <= 19*kPageSize - size; offset+=size) {
103 poke(20);

Callers 1

grow-memory.jsFile · 0.70

Calls 8

genMemoryGrowBuilderFunction · 0.70
pokeFunction · 0.70
peekFunction · 0.70
assertTrapsFunction · 0.70
growMemFunction · 0.70
assertEqualsFunction · 0.50
addMemoryMethod · 0.45
instantiateMethod · 0.45

Tested by

no test coverage detected