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

Side by Side Diff: test/mjsunit/regress/wasm/regression-02256.js

Issue 2393443003: [wasm] explicitly mark off unlinked wasm module instances (Closed)
Patch Set: [wasm] reset owning instance explicitly Created 4 years, 2 months 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 | « src/wasm/wasm-module.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4 //
5 // Flags: --random-seed=891196975 --expose-gc --allow-natives-syntax
6 // Flags: --gc-interval=207 --stress-compaction --validate-asm
7 //
8 // /v8/test/mjsunit/wasm/grow-memory.js
9 // /v8/test/mjsunit/regress/regress-540.js
10 // /v8/test/mjsunit/regress/wasm/regression-02862.js
11 // /v8/test/mjsunit/regress/regress-2813.js
12 // /v8/test/mjsunit/regress/regress-323845.js
13 // Begin stripped down and modified version of mjsunit.js for easy minimization in CF.
14
15 function MjsUnitAssertionError(message) {}
16 MjsUnitAssertionError.prototype.toString = function() {
17 return this.message;
18 };
19 var assertSame;
20 var assertEquals;
21 var assertEqualsDelta;
22 var assertArrayEquals;
23 var assertPropertiesEqual;
24 var assertToStringEquals;
25 var assertTrue;
26 var assertFalse;
27 var triggerAssertFalse;
28 var assertNull;
29 var assertNotNull;
30 var assertThrows;
31 var assertDoesNotThrow;
32 var assertInstanceof;
33 var assertUnreachable;
34 var assertOptimized;
35 var assertUnoptimized;
36
37 function classOf(object) {
38 var string = Object.prototype.toString.call(object);
39 return string.substring(8, string.length - 1);
40 }
41
42 function PrettyPrint(value) {
43 return "";
44 }
45
46 function PrettyPrintArrayElement(value, index, array) {
47 return "";
48 }
49
50 function fail(expectedText, found, name_opt) {}
51
52 function deepObjectEquals(a, b) {
53 var aProps = Object.keys(a);
54 aProps.sort();
55 var bProps = Object.keys(b);
56 bProps.sort();
57 if (!deepEquals(aProps, bProps)) {
58 return false;
59 }
60 for (var i = 0; i < aProps.length; i++) {
61 if (!deepEquals(a[aProps[i]], b[aProps[i]])) {
62 return false;
63 }
64 }
65 return true;
66 }
67
68 function deepEquals(a, b) {
69 if (a === b) {
70 if (a === 0) return (1 / a) === (1 / b);
71 return true;
72 }
73 if (typeof a != typeof b) return false;
74 if (typeof a == "number") return isNaN(a) && isNaN(b);
75 if (typeof a !== "object" && typeof a !== "function") return false;
76 var objectClass = classOf(a);
77 if (objectClass !== classOf(b)) return false;
78 if (objectClass === "RegExp") {
79 return (a.toString() === b.toString());
80 }
81 if (objectClass === "Function") return false;
82 if (objectClass === "Array") {
83 var elementCount = 0;
84 if (a.length != b.length) {
85 return false;
86 }
87 for (var i = 0; i < a.length; i++) {
88 if (!deepEquals(a[i], b[i])) return false;
89 }
90 return true;
91 }
92 if (objectClass == "String" || objectClass == "Number" || objectClass == "Bo olean" || objectClass == "Date") {
93 if (a.valueOf() !== b.valueOf()) return false;
94 }
95 return deepObjectEquals(a, b);
96 }
97 assertSame = function assertSame(expected, found, name_opt) {
98 if (found === expected) {
99 if (expected !== 0 || (1 / expected) == (1 / found)) return;
100 } else if ((expected !== expected) && (found !== found)) {
101 return;
102 }
103 fail(PrettyPrint(expected), found, name_opt);
104 };
105 assertEquals = function assertEquals(expected, found, name_opt) {
106 if (!deepEquals(found, expected)) {
107 fail(PrettyPrint(expected), found, name_opt);
108 }
109 };
110 assertEqualsDelta = function assertEqualsDelta(expected, found, delta, name_opt) {
111 assertTrue(Math.abs(expected - found) <= delta, name_opt);
112 };
113 assertArrayEquals = function assertArrayEquals(expected, found, name_opt) {
114 var start = "";
115 if (name_opt) {
116 start = name_opt + " - ";
117 }
118 assertEquals(expected.length, found.length, start + "array length");
119 if (expected.length == found.length) {
120 for (var i = 0; i < expected.length; ++i) {
121 assertEquals(expected[i], found[i], start + "array element at index " + i);
122 }
123 }
124 };
125 assertPropertiesEqual = function assertPropertiesEqual(expected, found, name_opt ) {
126 if (!deepObjectEquals(expected, found)) {
127 fail(expected, found, name_opt);
128 }
129 };
130 assertToStringEquals = function assertToStringEquals(expected, found, name_opt) {
131 if (expected != String(found)) {
132 fail(expected, found, name_opt);
133 }
134 };
135 assertTrue = function assertTrue(value, name_opt) {
136 assertEquals(true, value, name_opt);
137 };
138 assertFalse = function assertFalse(value, name_opt) {
139 assertEquals(false, value, name_opt);
140 };
141 assertNull = function assertNull(value, name_opt) {
142 if (value !== null) {
143 fail("null", value, name_opt);
144 }
145 };
146 assertNotNull = function assertNotNull(value, name_opt) {
147 if (value === null) {
148 fail("not null", value, name_opt);
149 }
150 };
151 assertThrows = function assertThrows(code, type_opt, cause_opt) {
152 var threwException = true;
153 try {
154 if (typeof code == 'function') {
155 code();
156 } else {
157 eval(code);
158 }
159 threwException = false;
160 } catch (e) {
161 if (typeof type_opt == 'function') {
162 assertInstanceof(e, type_opt);
163 }
164 if (arguments.length >= 3) {
165 assertEquals(e.type, cause_opt);
166 }
167 return;
168 }
169 };
170 assertInstanceof = function assertInstanceof(obj, type) {
171 if (!(obj instanceof type)) {
172 var actualTypeName = null;
173 var actualConstructor = Object.getPrototypeOf(obj).constructor;
174 if (typeof actualConstructor == "function") {
175 actualTypeName = actualConstructor.name || String(actualConstructor) ;
176 }
177 fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + (type .name || type) + ">" + (actualTypeName ? " but of < " + actualTypeName + ">" : " "));
178 }
179 };
180 assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) {
181 try {
182 if (typeof code == 'function') {
183 code();
184 } else {
185 eval(code);
186 }
187 } catch (e) {
188 fail("threw an exception: ", e.message || e, name_opt);
189 }
190 };
191 assertUnreachable = function assertUnreachable(name_opt) {
192 var message = "Fail" + "ure: unreachable";
193 if (name_opt) {
194 message += " - " + name_opt;
195 }
196 };
197 var OptimizationStatus = function() {}
198 assertUnoptimized = function assertUnoptimized(fun, sync_opt, name_opt) {
199 if (sync_opt === undefined) sync_opt = "";
200 assertTrue(OptimizationStatus(fun, sync_opt) != 1, name_opt);
201 }
202 assertOptimized = function assertOptimized(fun, sync_opt, name_opt) {
203 if (sync_opt === undefined) sync_opt = "";
204 assertTrue(OptimizationStatus(fun, sync_opt) != 2, name_opt);
205 }
206 triggerAssertFalse = function() {}
207 try {
208 console.log;
209 print = console.log;
210 alert = console.log;
211 } catch (e) {}
212
213 function runNearStackLimit(f) {
214 function t() {
215 try {
216 t();
217 } catch (e) {
218 f();
219 }
220 };
221 try {
222 t();
223 } catch (e) {}
224 }
225
226 function quit() {}
227
228 function nop() {}
229 try {
230 gc;
231 } catch (e) {
232 gc = nop;
233 }
234
235 function getRandomProperty(v, rand) {
236 var properties = Object.getOwnPropertyNames(v);
237 var proto = Object.getPrototypeOf(v);
238 if (proto) {
239 properties = properties.concat(Object.getOwnPropertyNames(proto));
240 }
241 if (properties.includes("constructor") && v.constructor.hasOwnProperty("__pr oto__")) {
242 properties = properties.concat(Object.getOwnPropertyNames(v.constructor. __proto__));
243 }
244 if (properties.length == 0) {
245 return "0";
246 }
247 return properties[rand % properties.length];
248 }
249 // End stripped down and modified version of mjsunit.js.
250
251 var __v_0 = {};
252 var __v_1 = {};
253 var __v_2 = {};
254 var __v_3 = {};
255 var __v_4 = -1073741824;
256 var __v_5 = {};
257 var __v_6 = 1;
258 var __v_7 = 1073741823;
259 var __v_8 = {};
260 var __v_9 = {};
261 var __v_10 = 4294967295;
262 var __v_11 = this;
263 var __v_12 = {};
264 var __v_13 = {};
265 try {
266 load("test/mjsunit/wasm/wasm-constants.js");
267 load("test/mjsunit/wasm/wasm-module-__v_1.js");
268 __v_2 = 0x10000;
269 } catch (e) {
270 print("Caught: " + e);
271 }
272
273 function __f_16() {
274 var __v_1 = new WasmModuleBuilder();
275 __v_1.addFunction("grow_memory", kSig_i_i)
276 .addBody([kExprGetLocal, 0, kExprGrowMemory])
277 .exportFunc();
278 __v_1.addFunction("load", kSig_i_i)
279 .addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0])
280 .exportFunc();
281 __v_1.addFunction("store", kSig_i_ii)
282 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0, kE xprGetLocal, 1])
283 .exportFunc();
284 __v_1.addFunction("load16", kSig_i_i)
285 .addBody([kExprGetLocal, 0, kExprI32LoadMem16U, 0, 0])
286 .exportFunc();
287 __v_1.addFunction("store16", kSig_i_ii)
288 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem16, 0, 0, kExprGetLocal, 1])
289 .exportFunc();
290 __v_1.__p_1551105852 = __v_1[getRandomProperty(__v_1, 1551105852)];
291 __v_1.__defineGetter__(getRandomProperty(__v_1, 348910887), function() {
292 gc();
293 __v_9[getRandomProperty(__v_9, 1894652048)] = __v_13[getRandomProperty(_ _v_13, 1352929371)];
294 return __v_1.__p_1551105852;
295 });
296 __v_1.addFunction("load8", kSig_i_i)
297 .addBody([kExprGetLocal, 0, kExprI32LoadMem8U, 0, 0])
298 .exportFunc();
299 __v_1.addFunction("store8", kSig_i_ii)
300 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem8, 0, 0, k ExprGetLocal, 1])
301 .exportFunc();
302 return __v_1;
303 }
304
305 function __f_14() {
306 var __v_4 = __f_16();
307 __v_1.addMemory(1, 1, false);
308 var module = __v_1.instantiate();
309 var __v_3;
310
311 function __f_1() {
312 return module.exports.load(__v_3);
313 }
314
315 function __f_2(value) {
316 return module.exports.store(__v_3, value);
317 }
318
319 function __f_8(pages) {
320 return module.exports.grow_memory(pages);
321 }
322 for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) {
323 __f_2(20);
324 assertEquals(20, __f_1());
325 }
326 for (__v_3 = __v_2 - 3; __v_3 < __v_2 + 4; __v_3++) {
327 assertTraps(kTrapMemOutOfBounds, __f_2);
328 assertTraps(kTrapMemOutOfBounds, __f_1);
329 }
330 assertEquals(1, __f_8(3));
331 for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 4; __v_3 += 4) {
332 __f_2(20);
333 assertEquals(20, __f_1());
334 }
335 for (__v_3 = 4 * __v_2 - 3; __v_3 < 4 * __v_2 + 4; __v_3++) {
336 assertTraps(kTrapMemOutOfBounds, __f_2);
337 assertTraps(kTrapMemOutOfBounds, __f_1);
338 }
339 assertEquals(4, __f_8(15));
340 for (__v_3 = 4 * __v_2 - 3; __v_3 <= 4 * __v_2 + 4; __v_3 += 4) {
341 __f_2(20);
342 assertEquals(20, __f_1());
343 }
344 for (__v_3 = 19 * __v_2 - 10; __v_3 <= 19 * __v_2 - 4; __v_3 += 4) {
345 __f_2(20);
346 gc();
347 assertEquals(12, __f_1());
348 }
349 for (__v_3 = 19 * __v_2 - 3; __v_3 < 19 * __v_2 + 5; __v_3++) {
350 assertTraps(kTrapMemOutOfBounds, __f_2);
351 assertTraps(kTrapMemOutOfBounds, __f_1);
352 }
353 }
354 try {
355 __f_14();
356 } catch (e) {
357 print("Caught: " + e);
358 }
359
360 function __f_13() {
361 var __v_1 = __f_16();
362 __v_1.__defineGetter__(getRandomProperty(__v_1, 1322348896), function() {
363 gc();
364 return __f_28(__v_1);
365 });
366 __v_1.addMemory(1, 1, false);
367 var module = __v_1.instantiate();
368 assertEquals(0, __f_30(0));
369 var __v_3;
370
371 function __f_1() {
372 return module.exports.load16(__v_3);
373 }
374
375 function __f_2(value) {
376 return module.exports.store16(__v_3, value);
377 }
378
379 function __f_8(pages) {
380 return module.exports.grow_memory(pages);
381 }
382 for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) {
383 __f_2(20);
384 assertEquals(20, __f_1());
385 __f_19();
386 }
387 for (__v_3 = __v_2 - 1; __v_3 < __v_2 + 4; __v_3++) {
388 assertTraps(kTrapMemOutOfBounds, __f_2);
389 assertTraps(kTrapMemOutOfBounds, __f_1);
390 }
391 assertEquals(65535, __f_8(0));
392 for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 2; __v_3 += 2) {
393 __f_2(20);
394 assertEquals(20, __f_1());
395 }
396 for (__v_3 = 4 * __v_2 - 1; __v_3 < 4 * __v_2 + 4; __v_3++) {
397 assertTraps(kTrapMemOutOfBounds, __f_2);
398 assertTraps(kTrapMemOutOfBounds, __f_1);
399 }
400 assertEquals(4, __f_8(15));
401 for (__v_3 = 4 * __v_2 - 2; __v_3 <= 4 * __v_2 + 4; __v_3 += 2) {
402 __f_2(20);
403 assertEquals(20, __f_1());
404 }
405 for (__v_1 = 19 * __v_11 - 10; __v_13 <= 19 * __v_2 - 2; __v_9 += 2) {
406 __f_2(20);
407 assertEquals(20, __f_1());
408 }
409 for (__v_3 = 19 * __v_2 - 1; __v_3 < 19 * __v_2 + 5; __v_3++) {
410 assertTraps(kTrapMemOutOfBounds, __f_2);
411 assertTraps(kTrapMemOutOfBounds, __f_1);
412 }
413 }
414 try {
415 __f_13();
416 } catch (e) {
417 print("Caught: " + e);
418 }
419
420 function __f_10() {
421 var __v_1 = __f_16();
422 __v_1.addMemory(1, 1, false);
423 var module = __v_1.instantiate();
424 var __v_3;
425
426 function __f_1() {
427 return module.exports.load8(__v_3);
428 }
429
430 function __f_2(value) {
431 return module.exports.store8(__v_3, value);
432 }
433
434 function __f_8(pages) {
435 return module.exports.grow_memory(pages);
436 }
437 for (__v_3 = 0; __v_3 <= __v_2 - 1; __v_3++) {
438 __f_2(20);
439 assertEquals(20, __f_1());
440 }
441 for (__v_3 = __v_2; __v_3 < __v_2 + 4; __v_3++) {
442 assertTraps(kTrapMemOutOfBounds, __f_2);
443 assertTraps(kTrapMemOutOfBounds, __f_1);
444 }
445 assertEquals(1, __f_8(3));
446 for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 1; __v_3++) {
447 __f_2(20);
448 assertEquals(20, __f_1());
449 }
450 for (__v_3 = 4 * __v_2; __v_3 < 4 * __v_2 + 4; __v_3++) {
451 assertTraps(kTrapMemOutOfBounds, __f_2);
452 assertTraps(kTrapMemOutOfBounds, __f_1);
453 }
454 assertEquals(4, __f_8(15));
455 for (__v_3 = 4 * __v_2; __v_3 <= 4 * __v_2 + 4; __v_3++) {
456 __f_2(20);
457 assertEquals(20, __f_1());
458 }
459 for (__v_3 = 19 * __v_2 - 10; __v_3 <= 19 * __v_2 - 1; __v_3++) {
460 __f_2(20);
461 assertEquals(20, __f_1());
462 }
463 for (__v_3 = 19 * __v_2; __v_3 < 19 * __v_2 + 5; __v_3++) {
464 assertTraps(kTrapMemOutOfBounds, __f_2);
465 assertTraps(kTrapMemOutOfBounds, __f_1);
466 }
467 }
468 try {
469 __f_10();
470 } catch (e) {
471 print("Caught: " + e);
472 }
473
474 function __f_5() {
475 var __v_1 = __f_16();
476 var module = __v_1.instantiate();
477 var __v_3;
478
479 function __f_1() {
480 return module.exports.load(__v_3);
481 }
482
483 function __f_2(value) {
484 return module.exports.store(__v_3, value);
485 }
486
487 function __f_8(pages) {
488 return module.exports.grow_memory(pages);
489 }
490 assertTraps(kTrapMemOutOfBounds, __f_1);
491 assertTraps(kTrapMemOutOfBounds, __f_2);
492 assertEquals(0, __f_8(1));
493 for (__v_3 = 0; __v_3 <= __v_2 - 4; __v_3++) {
494 __f_2(20);
495 assertEquals(20, __f_1());
496 }
497 for (__v_3 = __v_2; __v_3 <= __v_2 + 5; __v_3++) {
498 assertTraps(kTrapMemOutOfBounds, __f_1);
499 }
500 }
501 try {
502 __f_5();
503 } catch (e) {
504 print("Caught: " + e);
505 }
506
507 function __f_9() {
508 var __v_1 = __f_16();
509 var module = __v_1.instantiate();
510 var __v_4 = 16385;
511
512 function __f_8(pages) {
513 return module.exports.grow_memory(pages);
514 }
515 assertEquals(-1, __f_8(__v_13));
516 }
517 try {
518 __f_9();
519 } catch (e) {
520 print("Caught: " + e);
521 }
522
523 function __f_12() {
524 var __v_1 = __f_16();
525 __v_1.addMemory(1, 1, false);
526 var module = __v_9.instantiate();
527 __v_4.__p_1905062277 = __v_4[getRandomProperty(__v_4, 1905062277)];
528 __v_4.__defineGetter__(getRandomProperty(__v_4, 1764398743), function() {
529 gc();
530 __v_0[getRandomProperty(__v_0, 1011363961)] = __v_8[getRandomProperty(__ v_8, 1946768258)];
531 return __v_4.__p_1905062277;
532 });
533 var __v_4 = 16384;
534
535 function __f_8(pages) {
536 return module.exports.grow_memory(pages);
537 }
538 assertEquals(-1, __f_8(__v_4));
539 }
540 try {
541 __f_12();
542 } catch (e) {
543 print("Caught: " + e);
544 }
545
546 function __f_0() {
547 var __v_1 = __f_16();
548 var module = __v_1.instantiate();
549
550 function __f_8(pages) {
551 return module.exports.grow_memory(pages);
552 }
553 assertEquals(-1, __f_8(-1));
554 };
555 try {
556 __f_0();
557 } catch (e) {
558 print("Caught: " + e);
559 }
560
561 function __f_4() {
562 var __v_1 = __f_16();
563 __v_1.addMemory(1, 1, false);
564 __v_1.addFunction("memory_size", kSig_i_v)
565 .addBody([kExprMemorySize])
566 .exportFunc();
567 var module = __v_1.instantiate();
568
569 function __f_8(pages) {
570 return module.exports.grow_memory(pages);
571 }
572
573 function __f_7() {
574 return module.exports.memory_size();
575 }
576 assertEquals(1, __f_7());
577 assertEquals(1, __f_8(1));
578 assertEquals(2, __f_7());
579 }
580 try {
581 __f_4();
582 gc();
583 } catch (e) {
584 print("Caught: " + e);
585 }
586
587 function __f_6() {
588 var __v_1 = __f_16();
589 __v_1.addMemory(1, 1, false);
590 var module = __v_1.instantiate();
591 var __v_3, __v_0;
592 gc();
593
594 function __f_1() {
595 return module.exports.load(__v_3);
596 }
597
598 function __f_2(value) {
599 return module.exports.store(__v_3, value);
600 }
601
602 function __f_8(pages) {
603 return module.exports.grow_memory(pages);
604 }
605 gc();
606 for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) {
607 __f_2(100000 - __v_3);
608 __v_3.__defineGetter__(getRandomProperty(__v_3, 764734523), function() {
609 gc();
610 return __f_16(__v_3);
611 });
612 assertEquals(100000 - __v_3, __f_1());
613 }
614 assertEquals(1, __f_8(3));
615 for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) {
616 assertEquals(100000 - __v_3, __f_1());
617 }
618 }
619 try {
620 __f_6();
621 gc();
622 } catch (e) {
623 print("Caught: " + e);
624 }
625
626 function __f_11() {
627 var __v_1 = __f_16();
628 __v_1.addMemory(1, 1, false);
629 var module = __v_2.instantiate();
630 var __v_3, __v_0;
631
632 function __f_1() {
633 return module.exports.load16(__v_3);
634 }
635
636 function __f_2(value) {
637 return module.exports.store16(__v_3, value);
638 }
639
640 function __f_8(pages) {
641 return module.exports.grow_memory(pages);
642 }
643 for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) {
644 __f_2(65535 - __v_3);
645 assertEquals(65535 - __v_3, __f_1());
646 }
647 assertEquals(1, __f_8(3));
648 for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) {
649 assertEquals(65535 - __v_3, __f_1());
650 }
651 }
652 try {
653 __f_11();
654 } catch (e) {
655 print("Caught: " + e);
656 }
657
658 function __f_15() {
659 var __v_1 = __f_16();
660 __v_1.addMemory(1, 1, false);
661 var module = __v_1.instantiate();
662 var __v_3, __v_0 = 0;
663
664 function __f_1() {
665 return module.exports.load8(__v_10);
666 }
667
668 function __f_2(value) {
669 return module.exports.store8(__v_3, value);
670 }
671
672 function __f_8(pages) {
673 return module.exports.grow_memory(pages);
674 }
675 for (__v_3 = 0; __v_3 <= (__v_2 - 1); __v_3++, __v_0++) {
676 __f_2(__v_0);
677 assertEquals(__v_0, __f_1());
678 if (__v_0 == 255) __v_0 = 0;
679 }
680 assertEquals(1, __f_8(3));
681 __v_0 = 0;
682 for (__v_10 = 0; __v_4 <= (__v_0 - 1); __v_11++, __v_5++) {
683 assertEquals(__v_0, __f_1());
684 if (__v_10 == 255) __v_5 = 0;
685 }
686 }
687 try {
688 __f_15();
689 } catch (e) {
690 print("Caught: " + e);
691 }
692
693 function __f_3() {
694 var __v_1 = __f_16();
695 __v_1.addMemory(1, 1, false);
696 var module = __v_1.instantiate();
697 var __v_3, __v_0;
698
699 function __f_1() {
700 return module.exports.load(__v_3);
701 }
702
703 function __f_2(value) {
704 return module.exports.store(__v_3, value);
705 }
706
707 function __f_8(pages) {
708 return module.exports.grow_memory(pages);
709 }
710 gc();
711 __v_3 = 3 * __v_2 + 4;
712 assertTraps(kTrapMemOutOfBounds, __f_2);
713 assertEquals(1, __f_8(1));
714 assertTraps(kTrapMemOutOfBounds, __f_2);
715 assertEquals(2, __f_8(1));
716 assertTraps(kTrapMemOutOfBounds, __f_2);
717 assertEquals(3, __f_8(1));
718 for (__v_3 = 3 * __v_2; __v_3 <= 4 * __v_2 - 4; __v_3++) {
719 __f_2(0xaced);
720 assertEquals(0xaced, __f_1());
721 }
722 for (__v_3 = 4 * __v_2 - 3; __v_3 <= 4 * __v_2 + 4; __v_3++) {
723 assertTraps(kTrapMemOutOfBounds, __f_2);
724 }
725 }
726 try {
727 __f_3();
728 } catch (e) {
729 print("Caught: " + e);
730 }
731
732 function __f_18(__f_17, y) {
733 eval(__f_17);
734 return y();
735 }
736 try {
737 var __v_17 = __f_18("function y() { return 1; }", function() {
738 return 0;
739 })
740 assertEquals(1, __v_17);
741 gc();
742 __v_17 =
743 (function(__f_17) {
744 function __f_17() {
745 return 3;
746 }
747 return __f_17();
748 })(function() {
749 return 2;
750 });
751 assertEquals(3, __v_17);
752 __v_17 =
753 (function(__f_17) {
754 function __f_17() {
755 return 5;
756 }
757 return arguments[0]();
758 })(function() {
759 return -1073741825;
760 });
761 assertEquals(5, __v_17);
762 } catch (e) {
763 print("Caught: " + e);
764 }
765
766 function __f_27() {}
767 try {
768 var __v_24 = {};
769 var __v_21 = {};
770 var __v_22 = {};
771 var __v_20 = {};
772 __v_58 = {
773 instantiateModuleFromAsm: function(text, ffi, heap) {
774 var __v_21 = eval('(' + text + ')');
775 if (__f_27()) {
776 throw "validate failure";
777 }
778 var __v_20 = __v_21();
779 if (__f_27()) {
780 throw "bad module args";
781 }
782 }
783 };
784 __f_21 = function __f_21() {
785 if (found === expected) {
786 if (1 / expected) return;
787 } else if ((expected !== expected) && (found !== found)) {
788 return;
789 };
790 };
791 __f_28 = function __f_28() {
792 if (!__f_23()) {
793 __f_125(__f_69(), found, name_opt);
794 }
795 };
796 __f_24 = function __f_24(code, type_opt, cause_opt) {
797 var __v_24 = true;
798 try {
799 if (typeof code == 'function') {
800 code();
801 } else {
802 eval();
803 }
804 __v_24 = false;
805 } catch (e) {
806 if (typeof type_opt == 'function') {
807 __f_22();
808 }
809 if (arguments.length >= 3) {
810 __f_28();
811 }
812 return;
813 }
814 };
815 __f_22 = function __f_22() {
816 if (obj instanceof type) {
817 obj.constructor;
818 if (typeof __v_57 == "function") {;
819 };
820 }
821 };
822 try {
823 __f_28();
824 __v_82.__p_750895751 = __v_82[getRandomProperty()];
825 } catch (e) {
826 "Caught: " + e;
827 }
828 __f_19();
829 gc();
830 __f_19(19, __f_24);
831 __f_19();
832 __f_19();
833 __f_24(function() {
834 __v_58.instantiateModuleFromAsm(__f_28.toString()).__f_20();
835 });
836 } catch (e) {
837 print("Caught: " + e);
838 }
839
840 function __f_19() {
841 "use asm";
842
843 function __f_20() {}
844 return {
845 __f_20: __f_20
846 };
847 }
848 try {
849 __f_19();
850 __f_19();
851 __f_19();
852 } catch (e) {
853 print("Caught: " + e);
854 }
855
856 function __f_29() {}
857 try {
858 __f_19();
859 try {
860 __f_19();
861 gc();
862 __f_25();
863 } catch (e) {
864 "Caught: " + e;
865 }
866 __f_19();
867 __f_19();
868 __f_19();
869 } catch (e) {
870 print("Caught: " + e);
871 }
872
873 function __f_23() {
874 "use asm";
875
876 function __f_20() {}
877 return {
878 __f_20: __f_20
879 };
880 }
881 try {
882 __f_19();
883 __f_19();
884 __f_19();
885 __f_19();
886 gc();
887 __f_19();
888 __f_19();
889 __f_19();
890 } catch (e) {
891 print("Caught: " + e);
892 }
893
894 function __f_26(stdlib) {
895 "use asm";
896 var __v_2 = new stdlib.Int32Array();
897 __v_22[4294967295] | 14 + 1 | 14;
898 return {
899 __f_20: __f_20
900 };
901 }
902
903 function __f_25() {
904 var __v_19 = new ArrayBuffer();
905 var __v_23 = new Int32Array(__v_19);
906 var module = __v_58.instantiateModuleFromAsm(__f_26.toString());
907 __f_28();
908 gc();
909 }
910 try {
911 (function() {})();
912 (function() {})();
913 try {
914 (function() {
915 __v_23.__defineGetter__(getRandomProperty(__v_23, 580179357), functi on() {
916 gc();
917 return __f_25(__v_23);
918 });
919 var __v_23 = 0x87654321;
920 __v_19.__f_89();
921 })();
922 } catch (e) {;
923 }
924 } catch (e) {
925 print("Caught: " + e);
926 }
927
928 function __f_30(x) {
929 var __v_30 = x + 1;
930 var __v_31 = x + 2;
931 if (x != 0) {
932 if (x > 0 & x < 100) {
933 return __v_30;
934 }
935 }
936 return 0;
937 }
938 try {
939 assertEquals(0, __f_30(0));
940 assertEquals(0, __f_30(0));
941 %OptimizeFunctionOnNextCall(__f_30);
942 assertEquals(3, __f_30(2));
943 } catch (e) {
944 print("Caught: " + e);
945 }
946
947 function __f_31() {
948 __f_32.arguments;
949 }
950
951 function __f_32(x) {
952 __f_31();
953 }
954
955 function __f_33() {
956 __f_32({});
957 }
958 try {
959 __f_33();
960 __f_33();
961 __f_33();
962 %OptimizeFunctionOnNextCall(__f_33);
963 __f_33();
964 gc();
965 } catch (e) {
966 print("Caught: " + e);
967 }
OLDNEW
« no previous file with comments | « src/wasm/wasm-module.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698