Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(296)

Side by Side Diff: test/mjsunit/wasm/import-memory.js

Issue 2591753002: [wasm] Implement correct 2-level namespace for imports. (Closed)
Patch Set: Fix debug tests Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/mjsunit/wasm/globals.js ('k') | test/mjsunit/wasm/import-table.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Flags: --expose-wasm 5 // Flags: --expose-wasm
6 6
7 load("test/mjsunit/wasm/wasm-constants.js"); 7 load("test/mjsunit/wasm/wasm-constants.js");
8 load("test/mjsunit/wasm/wasm-module-builder.js"); 8 load("test/mjsunit/wasm/wasm-module-builder.js");
9 9
10 (function TestOne() { 10 (function TestOne() {
11 print("TestOne"); 11 print("TestOne");
12 let memory = new WebAssembly.Memory({initial: 1}); 12 let memory = new WebAssembly.Memory({initial: 1});
13 assertEquals(kPageSize, memory.buffer.byteLength); 13 assertEquals(kPageSize, memory.buffer.byteLength);
14 let i32 = new Int32Array(memory.buffer); 14 let i32 = new Int32Array(memory.buffer);
15 let builder = new WasmModuleBuilder(); 15 let builder = new WasmModuleBuilder();
16 builder.addImportedMemory("mine"); 16 builder.addImportedMemory("mod", "mine");
17 builder.addFunction("main", kSig_i_v) 17 builder.addFunction("main", kSig_i_v)
18 .addBody([ 18 .addBody([
19 kExprI32Const, 0, 19 kExprI32Const, 0,
20 kExprI32LoadMem, 0, 0]) 20 kExprI32LoadMem, 0, 0])
21 .exportAs("main"); 21 .exportAs("main");
22 22
23 let main = builder.instantiate({mine: memory}).exports.main; 23 let main = builder.instantiate({mod: {mine: memory}}).exports.main;
24 assertEquals(0, main()); 24 assertEquals(0, main());
25 25
26 i32[0] = 993377; 26 i32[0] = 993377;
27 27
28 assertEquals(993377, main()); 28 assertEquals(993377, main());
29 })(); 29 })();
30 30
31 (function TestIdentity() { 31 (function TestIdentity() {
32 print("TestIdentity"); 32 print("TestIdentity");
33 let memory = new WebAssembly.Memory({initial: 1}); 33 let memory = new WebAssembly.Memory({initial: 1});
34 let i32 = new Int32Array(memory.buffer); 34 let i32 = new Int32Array(memory.buffer);
35 let builder = new WasmModuleBuilder(); 35 let builder = new WasmModuleBuilder();
36 builder.addImportedMemory("garg"); 36 builder.addImportedMemory("dad", "garg");
37 builder.exportMemoryAs("daggle"); 37 builder.exportMemoryAs("daggle");
38 38
39 let instance = builder.instantiate({garg: memory}); 39 let instance = builder.instantiate({dad: {garg: memory}});
40 assertSame(memory, instance.exports.daggle); 40 assertSame(memory, instance.exports.daggle);
41 })(); 41 })();
42 42
43 (function TestImportExport() { 43 (function TestImportExport() {
44 print("TestImportExport"); 44 print("TestImportExport");
45 var i1; 45 var i1;
46 { 46 {
47 let builder = new WasmModuleBuilder(); 47 let builder = new WasmModuleBuilder();
48 builder.addMemory(1, 1, false); 48 builder.addMemory(1, 1, false);
49 builder.exportMemoryAs("exported_mem"); 49 builder.exportMemoryAs("exported_mem");
50 builder.addFunction("foo", kSig_i_i) 50 builder.addFunction("foo", kSig_i_i)
51 .addBody([ 51 .addBody([
52 kExprGetLocal, 0, 52 kExprGetLocal, 0,
53 kExprI32LoadMem, 0, 0]) 53 kExprI32LoadMem, 0, 0])
54 .exportAs("foo"); 54 .exportAs("foo");
55 i1 = builder.instantiate(); 55 i1 = builder.instantiate();
56 } 56 }
57 57
58 var i2; 58 var i2;
59 { 59 {
60 let builder = new WasmModuleBuilder(); 60 let builder = new WasmModuleBuilder();
61 builder.addMemory(1, 1, false); 61 builder.addMemory(1, 1, false);
62 builder.addImportedMemory("imported_mem"); 62 builder.addImportedMemory("fil", "imported_mem");
63 builder.addFunction("bar", kSig_i_i) 63 builder.addFunction("bar", kSig_i_i)
64 .addBody([ 64 .addBody([
65 kExprGetLocal, 0, 65 kExprGetLocal, 0,
66 kExprI32LoadMem, 0, 0]) 66 kExprI32LoadMem, 0, 0])
67 .exportAs("bar"); 67 .exportAs("bar");
68 i2 = builder.instantiate({imported_mem: i1.exports.exported_mem}); 68 i2 = builder.instantiate({fil: {imported_mem: i1.exports.exported_mem}});
69 } 69 }
70 70
71 let i32 = new Int32Array(i1.exports.exported_mem.buffer); 71 let i32 = new Int32Array(i1.exports.exported_mem.buffer);
72 72
73 for (var i = 0; i < 1e11; i = i * 3 + 5) { 73 for (var i = 0; i < 1e11; i = i * 3 + 5) {
74 for (var j = 0; j < 10; j++) { 74 for (var j = 0; j < 10; j++) {
75 var val = i + 99077 + j; 75 var val = i + 99077 + j;
76 i32[j] = val; 76 i32[j] = val;
77 assertEquals(val | 0, i1.exports.foo(j * 4)); 77 assertEquals(val | 0, i1.exports.foo(j * 4));
78 assertEquals(val | 0, i2.exports.bar(j * 4)); 78 assertEquals(val | 0, i2.exports.bar(j * 4));
79 } 79 }
80 } 80 }
81 })(); 81 })();
82 82
83 (function ValidateBoundsCheck() { 83 (function ValidateBoundsCheck() {
84 print("ValidateBoundsCheck"); 84 print("ValidateBoundsCheck");
85 let memory = new WebAssembly.Memory({initial: 1, maximum: 5}); 85 let memory = new WebAssembly.Memory({initial: 1, maximum: 5});
86 assertEquals(kPageSize, memory.buffer.byteLength); 86 assertEquals(kPageSize, memory.buffer.byteLength);
87 let i32 = new Int32Array(memory.buffer); 87 let i32 = new Int32Array(memory.buffer);
88 let builder = new WasmModuleBuilder(); 88 let builder = new WasmModuleBuilder();
89 // builder.addImportedMemory("mine"); 89 builder.addImportedMemory("gaz", "mine");
90 builder.addImportedMemory("mine");
91 builder.addFunction("load", kSig_i_i) 90 builder.addFunction("load", kSig_i_i)
92 .addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0]) 91 .addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0])
93 .exportFunc(); 92 .exportFunc();
94 builder.addFunction("store", kSig_i_ii) 93 builder.addFunction("store", kSig_i_ii)
95 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0, 94 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0,
96 kExprGetLocal, 1]) 95 kExprGetLocal, 1])
97 .exportFunc(); 96 .exportFunc();
98 var offset; 97 var offset;
99 let instance = builder.instantiate({mine: memory}); 98 let instance = builder.instantiate({gaz: {mine: memory}});
100 function load() { return instance.exports.load(offset); } 99 function load() { return instance.exports.load(offset); }
101 function store(value) { return instance.exports.store(offset, value); } 100 function store(value) { return instance.exports.store(offset, value); }
102 101
103 for (offset = 0; offset < kPageSize - 3; offset+=4) { 102 for (offset = 0; offset < kPageSize - 3; offset+=4) {
104 store(offset); 103 store(offset);
105 } 104 }
106 for (offset = 0; offset < kPageSize - 3; offset+=4) { 105 for (offset = 0; offset < kPageSize - 3; offset+=4) {
107 assertEquals(offset, load()); 106 assertEquals(offset, load());
108 } 107 }
109 for (offset = kPageSize - 3; offset < kPageSize + 4; offset++) { 108 for (offset = kPageSize - 3; offset < kPageSize + 4; offset++) {
110 assertTraps(kTrapMemOutOfBounds, load); 109 assertTraps(kTrapMemOutOfBounds, load);
111 } 110 }
112 })(); 111 })();
113 112
114 (function TestGrowMemoryMaxDesc() { 113 (function TestGrowMemoryMaxDesc() {
115 print("MaximumDescriptor"); 114 print("MaximumDescriptor");
116 let memory = new WebAssembly.Memory({initial: 1, maximum: 5}); 115 let memory = new WebAssembly.Memory({initial: 1, maximum: 5});
117 assertEquals(kPageSize, memory.buffer.byteLength); 116 assertEquals(kPageSize, memory.buffer.byteLength);
118 let i32 = new Int32Array(memory.buffer); 117 let i32 = new Int32Array(memory.buffer);
119 let builder = new WasmModuleBuilder(); 118 let builder = new WasmModuleBuilder();
120 builder.addImportedMemory("mine", "", 0, 20); 119 builder.addImportedMemory("mine", "dog", 0, 20);
121 builder.addFunction("load", kSig_i_i) 120 builder.addFunction("load", kSig_i_i)
122 .addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0]) 121 .addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0])
123 .exportFunc(); 122 .exportFunc();
124 builder.addFunction("store", kSig_i_ii) 123 builder.addFunction("store", kSig_i_ii)
125 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0, 124 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0,
126 kExprGetLocal, 1]) 125 kExprGetLocal, 1])
127 .exportFunc(); 126 .exportFunc();
128 var offset; 127 var offset;
129 let instance = builder.instantiate({mine: memory}); 128 let instance = builder.instantiate({mine: {dog: memory}});
130 function load() { return instance.exports.load(offset); } 129 function load() { return instance.exports.load(offset); }
131 function store(value) { return instance.exports.store(offset, value); } 130 function store(value) { return instance.exports.store(offset, value); }
132 131
133 for (var i = 1; i < 5; i++) { 132 for (var i = 1; i < 5; i++) {
134 for (offset = (i - 1) * kPageSize; offset < i * kPageSize - 3; offset+=4) { 133 for (offset = (i - 1) * kPageSize; offset < i * kPageSize - 3; offset+=4) {
135 store(offset * 2); 134 store(offset * 2);
136 } 135 }
137 assertEquals(i, memory.grow(1)); 136 assertEquals(i, memory.grow(1));
138 assertEquals((i + 1) * kPageSize, memory.buffer.byteLength); 137 assertEquals((i + 1) * kPageSize, memory.buffer.byteLength);
139 } 138 }
140 for (offset = 4 * kPageSize; offset < 5 * kPageSize - 3; offset+=4) { 139 for (offset = 4 * kPageSize; offset < 5 * kPageSize - 3; offset+=4) {
141 store(offset * 2); 140 store(offset * 2);
142 } 141 }
143 for (offset = 0; offset < 5 * kPageSize - 3; offset+=4) { 142 for (offset = 0; offset < 5 * kPageSize - 3; offset+=4) {
144 assertEquals(offset * 2, load()); 143 assertEquals(offset * 2, load());
145 } 144 }
146 for (offset = 5 * kPageSize; offset < 5 * kPageSize + 4; offset++) { 145 for (offset = 5 * kPageSize; offset < 5 * kPageSize + 4; offset++) {
147 assertThrows(load); 146 assertThrows(load);
148 } 147 }
149 assertThrows(() => memory.grow(1)); 148 assertThrows(() => memory.grow(1));
150 })(); 149 })();
151 150
152 (function TestGrowMemoryZeroInitialMemory() { 151 (function TestGrowMemoryZeroInitialMemory() {
153 print("ZeroInitialMemory"); 152 print("ZeroInitialMemory");
154 let memory = new WebAssembly.Memory({initial: 0}); 153 let memory = new WebAssembly.Memory({initial: 0});
155 assertEquals(0, memory.buffer.byteLength); 154 assertEquals(0, memory.buffer.byteLength);
156 let i32 = new Int32Array(memory.buffer); 155 let i32 = new Int32Array(memory.buffer);
157 let builder = new WasmModuleBuilder(); 156 let builder = new WasmModuleBuilder();
158 builder.addImportedMemory("mine"); 157 builder.addImportedMemory("mine", "fro");
159 builder.addFunction("load", kSig_i_i) 158 builder.addFunction("load", kSig_i_i)
160 .addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0]) 159 .addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0])
161 .exportFunc(); 160 .exportFunc();
162 builder.addFunction("store", kSig_i_ii) 161 builder.addFunction("store", kSig_i_ii)
163 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0, 162 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0,
164 kExprGetLocal, 1]) 163 kExprGetLocal, 1])
165 .exportFunc(); 164 .exportFunc();
166 var offset; 165 var offset;
167 let instance = builder.instantiate({mine: memory}); 166 let instance = builder.instantiate({mine: {fro: memory}});
168 function load() { return instance.exports.load(offset); } 167 function load() { return instance.exports.load(offset); }
169 function store(value) { return instance.exports.store(offset, value); } 168 function store(value) { return instance.exports.store(offset, value); }
170 169
171 for (var i = 1; i < 5; i++) { 170 for (var i = 1; i < 5; i++) {
172 assertEquals(i - 1, memory.grow(1)); 171 assertEquals(i - 1, memory.grow(1));
173 assertEquals(i * kPageSize, memory.buffer.byteLength); 172 assertEquals(i * kPageSize, memory.buffer.byteLength);
174 for (offset = (i - 1) * kPageSize; offset < i * kPageSize - 3; offset++) { 173 for (offset = (i - 1) * kPageSize; offset < i * kPageSize - 3; offset++) {
175 store(offset * 2); 174 store(offset * 2);
176 } 175 }
177 } 176 }
178 for (offset = 5 * kPageSize; offset < 5 * kPageSize + 4; offset++) { 177 for (offset = 5 * kPageSize; offset < 5 * kPageSize + 4; offset++) {
179 assertThrows(load); 178 assertThrows(load);
180 } 179 }
181 assertThrows(() => memory.grow(16381)); 180 assertThrows(() => memory.grow(16381));
182 })(); 181 })();
183 182
184 (function ImportedMemoryBufferLength() { 183 (function ImportedMemoryBufferLength() {
185 print("ImportedMemoryBufferLength"); 184 print("ImportedMemoryBufferLength");
186 let memory = new WebAssembly.Memory({initial: 2, maximum: 10}); 185 let memory = new WebAssembly.Memory({initial: 2, maximum: 10});
187 assertEquals(2*kPageSize, memory.buffer.byteLength); 186 assertEquals(2*kPageSize, memory.buffer.byteLength);
188 let builder = new WasmModuleBuilder(); 187 let builder = new WasmModuleBuilder();
189 builder.addFunction("grow", kSig_i_i) 188 builder.addFunction("grow", kSig_i_i)
190 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) 189 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero])
191 .exportFunc(); 190 .exportFunc();
192 builder.addImportedMemory("mine"); 191 builder.addImportedMemory("cat", "mine");
193 let instance = builder.instantiate({mine: memory}); 192 let instance = builder.instantiate({cat: {mine: memory}});
194 function grow(pages) { return instance.exports.grow(pages); } 193 function grow(pages) { return instance.exports.grow(pages); }
195 assertEquals(2, grow(3)); 194 assertEquals(2, grow(3));
196 assertEquals(5*kPageSize, memory.buffer.byteLength); 195 assertEquals(5*kPageSize, memory.buffer.byteLength);
197 assertEquals(5, grow(5)); 196 assertEquals(5, grow(5));
198 assertEquals(10*kPageSize, memory.buffer.byteLength); 197 assertEquals(10*kPageSize, memory.buffer.byteLength);
199 assertThrows(() => memory.grow(1)); 198 assertThrows(() => memory.grow(1));
200 })(); 199 })();
201 200
202 (function TestGrowMemoryExportedMaximum() { 201 (function TestGrowMemoryExportedMaximum() {
203 print("TestGrowMemoryExportedMaximum"); 202 print("TestGrowMemoryExportedMaximum");
204 let initial_size = 1, maximum_size = 10; 203 let initial_size = 1, maximum_size = 10;
205 var exp_instance; 204 var exp_instance;
206 { 205 {
207 let builder = new WasmModuleBuilder(); 206 let builder = new WasmModuleBuilder();
208 builder.addMemory(initial_size, maximum_size, true); 207 builder.addMemory(initial_size, maximum_size, true);
209 builder.exportMemoryAs("exported_mem"); 208 builder.exportMemoryAs("exported_mem");
210 exp_instance = builder.instantiate(); 209 exp_instance = builder.instantiate();
211 } 210 }
212 var instance; 211 var instance;
213 { 212 {
214 var builder = new WasmModuleBuilder(); 213 var builder = new WasmModuleBuilder();
215 builder.addImportedMemory("imported_mem"); 214 builder.addImportedMemory("fur", "imported_mem");
216 builder.addFunction("mem_size", kSig_i_v) 215 builder.addFunction("mem_size", kSig_i_v)
217 .addBody([kExprMemorySize, kMemoryZero]) 216 .addBody([kExprMemorySize, kMemoryZero])
218 .exportFunc(); 217 .exportFunc();
219 builder.addFunction("grow", kSig_i_i) 218 builder.addFunction("grow", kSig_i_i)
220 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) 219 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero])
221 .exportFunc(); 220 .exportFunc();
222 instance = builder.instantiate({ 221 instance = builder.instantiate({fur: {
223 imported_mem: exp_instance.exports.exported_mem}); 222 imported_mem: exp_instance.exports.exported_mem}});
224 } 223 }
225 for (var i = initial_size; i < maximum_size; i++) { 224 for (var i = initial_size; i < maximum_size; i++) {
226 assertEquals(i, instance.exports.grow(1)); 225 assertEquals(i, instance.exports.grow(1));
227 assertEquals((i+1), instance.exports.mem_size()); 226 assertEquals((i+1), instance.exports.mem_size());
228 } 227 }
229 assertEquals(-1, instance.exports.grow(1)); 228 assertEquals(-1, instance.exports.grow(1));
230 })(); 229 })();
231 230
232 (function TestMemoryGrowWebAssemblyInstances() { 231 (function TestMemoryGrowWebAssemblyInstances() {
233 print("TestMemoryGrowWebAssemblyInstances"); 232 print("TestMemoryGrowWebAssemblyInstances");
234 let memory = new WebAssembly.Memory({initial: 1, maximum: 15}); 233 let memory = new WebAssembly.Memory({initial: 1, maximum: 15});
235 var builder = new WasmModuleBuilder(); 234 var builder = new WasmModuleBuilder();
236 builder.addImportedMemory("imported_mem"); 235 builder.addImportedMemory("lit", "imported_mem");
237 builder.addFunction("mem_size", kSig_i_v) 236 builder.addFunction("mem_size", kSig_i_v)
238 .addBody([kExprMemorySize, kMemoryZero]) 237 .addBody([kExprMemorySize, kMemoryZero])
239 .exportAs("mem_size"); 238 .exportAs("mem_size");
240 builder.addFunction("grow", kSig_i_i) 239 builder.addFunction("grow", kSig_i_i)
241 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) 240 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero])
242 .exportFunc(); 241 .exportFunc();
243 var module = new WebAssembly.Module(builder.toBuffer()); 242 var module = new WebAssembly.Module(builder.toBuffer());
244 var instances = []; 243 var instances = [];
245 for (var i = 0; i < 6; i++) { 244 for (var i = 0; i < 6; i++) {
246 instances.push(new WebAssembly.Instance(module, {imported_mem: memory})); 245 instances.push(new WebAssembly.Instance(module, {lit: {imported_mem: memory} }));
247 } 246 }
248 function verify_mem_size(expected_pages) { 247 function verify_mem_size(expected_pages) {
249 assertEquals(expected_pages*kPageSize, 248 assertEquals(expected_pages*kPageSize,
250 memory.buffer.byteLength); 249 memory.buffer.byteLength);
251 for (var i = 0; i < 6; i++) { 250 for (var i = 0; i < 6; i++) {
252 assertEquals(expected_pages, instances[i].exports.mem_size()); 251 assertEquals(expected_pages, instances[i].exports.mem_size());
253 } 252 }
254 } 253 }
255 254
256 // Verify initial memory size 255 // Verify initial memory size
(...skipping 10 matching lines...) Expand all
267 verify_mem_size(++current_mem_size); 266 verify_mem_size(++current_mem_size);
268 } 267 }
269 268
270 assertThrows(() => memory.grow(5)); 269 assertThrows(() => memory.grow(5));
271 })(); 270 })();
272 271
273 (function TestImportedMemoryGrowMultipleInstances() { 272 (function TestImportedMemoryGrowMultipleInstances() {
274 print("TestImportMemoryMultipleInstances"); 273 print("TestImportMemoryMultipleInstances");
275 let memory = new WebAssembly.Memory({initial: 5, maximum: 100}); 274 let memory = new WebAssembly.Memory({initial: 5, maximum: 100});
276 var builder = new WasmModuleBuilder(); 275 var builder = new WasmModuleBuilder();
277 builder.addImportedMemory("imported_mem"); 276 builder.addImportedMemory("nob", "imported_mem");
278 builder.addFunction("mem_size", kSig_i_v) 277 builder.addFunction("mem_size", kSig_i_v)
279 .addBody([kExprMemorySize, kMemoryZero]) 278 .addBody([kExprMemorySize, kMemoryZero])
280 .exportFunc(); 279 .exportFunc();
281 builder.addFunction("grow", kSig_i_i) 280 builder.addFunction("grow", kSig_i_i)
282 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) 281 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero])
283 .exportFunc(); 282 .exportFunc();
284 var instances = []; 283 var instances = [];
285 for (var i = 0; i < 5; i++) { 284 for (var i = 0; i < 5; i++) {
286 instances.push(builder.instantiate({imported_mem: memory})); 285 instances.push(builder.instantiate({nob: {imported_mem: memory}}));
287 } 286 }
288 function grow_instance_0(pages) { return instances[0].exports.grow(pages); } 287 function grow_instance_0(pages) { return instances[0].exports.grow(pages); }
289 function grow_instance_1(pages) { return instances[1].exports.grow(pages); } 288 function grow_instance_1(pages) { return instances[1].exports.grow(pages); }
290 function grow_instance_2(pages) { return instances[2].exports.grow(pages); } 289 function grow_instance_2(pages) { return instances[2].exports.grow(pages); }
291 function grow_instance_3(pages) { return instances[3].exports.grow(pages); } 290 function grow_instance_3(pages) { return instances[3].exports.grow(pages); }
292 function grow_instance_4(pages) { return instances[4].exports.grow(pages); } 291 function grow_instance_4(pages) { return instances[4].exports.grow(pages); }
293 292
294 function verify_mem_size(expected_pages) { 293 function verify_mem_size(expected_pages) {
295 assertEquals(expected_pages*kPageSize, memory.buffer.byteLength); 294 assertEquals(expected_pages*kPageSize, memory.buffer.byteLength);
296 for (var i = 0; i < 5; i++) { 295 for (var i = 0; i < 5; i++) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 { 334 {
336 let builder = new WasmModuleBuilder(); 335 let builder = new WasmModuleBuilder();
337 builder.addMemory(1, 11, true); 336 builder.addMemory(1, 11, true);
338 builder.exportMemoryAs("exported_mem"); 337 builder.exportMemoryAs("exported_mem");
339 builder.addFunction("mem_size", kSig_i_v) 338 builder.addFunction("mem_size", kSig_i_v)
340 .addBody([kExprMemorySize, kMemoryZero]) 339 .addBody([kExprMemorySize, kMemoryZero])
341 .exportFunc(); 340 .exportFunc();
342 instance = builder.instantiate(); 341 instance = builder.instantiate();
343 } 342 }
344 var builder = new WasmModuleBuilder(); 343 var builder = new WasmModuleBuilder();
345 builder.addImportedMemory("imported_mem"); 344 builder.addImportedMemory("doo", "imported_mem");
346 builder.addFunction("mem_size", kSig_i_v) 345 builder.addFunction("mem_size", kSig_i_v)
347 .addBody([kExprMemorySize, kMemoryZero]) 346 .addBody([kExprMemorySize, kMemoryZero])
348 .exportFunc(); 347 .exportFunc();
349 builder.addFunction("grow", kSig_i_i) 348 builder.addFunction("grow", kSig_i_i)
350 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) 349 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero])
351 .exportFunc(); 350 .exportFunc();
352 var instances = []; 351 var instances = [];
353 for (var i = 0; i < 10; i++) { 352 for (var i = 0; i < 10; i++) {
354 instances.push(builder.instantiate({ 353 instances.push(builder.instantiate({
355 imported_mem: instance.exports.exported_mem})); 354 doo: {imported_mem: instance.exports.exported_mem}}));
356 } 355 }
357 function verify_mem_size(expected_pages) { 356 function verify_mem_size(expected_pages) {
358 for (var i = 0; i < 10; i++) { 357 for (var i = 0; i < 10; i++) {
359 assertEquals(expected_pages, instances[i].exports.mem_size()); 358 assertEquals(expected_pages, instances[i].exports.mem_size());
360 } 359 }
361 } 360 }
362 var current_mem_size = 1; 361 var current_mem_size = 1;
363 for (var i = 0; i < 10; i++) { 362 for (var i = 0; i < 10; i++) {
364 function grow(pages) { return instances[i].exports.grow(pages); } 363 function grow(pages) { return instances[i].exports.grow(pages); }
365 assertEquals(current_mem_size, instances[i].exports.grow(1)); 364 assertEquals(current_mem_size, instances[i].exports.grow(1));
(...skipping 11 matching lines...) Expand all
377 .exportFunc(); 376 .exportFunc();
378 builder.addFunction("grow", kSig_i_i) 377 builder.addFunction("grow", kSig_i_i)
379 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero]) 378 .addBody([kExprGetLocal, 0, kExprGrowMemory, kMemoryZero])
380 .exportFunc(); 379 .exportFunc();
381 instance = builder.instantiate(); 380 instance = builder.instantiate();
382 assertEquals(kPageSize, instance.exports.exported_mem.buffer.byteLength); 381 assertEquals(kPageSize, instance.exports.exported_mem.buffer.byteLength);
383 assertEquals(1, instance.exports.grow(2)); 382 assertEquals(1, instance.exports.grow(2));
384 assertEquals(3, instance.exports.mem_size()); 383 assertEquals(3, instance.exports.mem_size());
385 assertEquals(3*kPageSize, instance.exports.exported_mem.buffer.byteLength); 384 assertEquals(3*kPageSize, instance.exports.exported_mem.buffer.byteLength);
386 })(); 385 })();
OLDNEW
« no previous file with comments | « test/mjsunit/wasm/globals.js ('k') | test/mjsunit/wasm/import-table.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698