v8/test/mjsunit/regress/wasm/regress-02256.js
Sven Sauleau 5bdb13297f [wasm] merge js constants file in module-builder
We noticed that almost every call site were loading both files,
the split isn't necessary anymore.

In some message tests, removed the absolute line number to allow future
changes.

Bug: v8:8726
Change-Id: I8527f0a1ecfa685aa01a5e2f5f47ddf1cb13a545
Reviewed-on: https://chromium-review.googlesource.com/c/1446452
Commit-Queue: Sven Sauleau <ssauleau@igalia.com>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59220}
2019-01-30 22:10:34 +00:00

968 lines
24 KiB
JavaScript

// Copyright 2016 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Flags: --random-seed=891196975 --expose-gc --allow-natives-syntax
// Flags: --gc-interval=207 --stress-compaction --validate-asm
// Flags: --opt --no-always-opt
//
// /v8/test/mjsunit/wasm/grow-memory.js
// /v8/test/mjsunit/regress/regress-540.js
// /v8/test/mjsunit/regress/wasm/regression-02862.js
// /v8/test/mjsunit/regress/regress-2813.js
// /v8/test/mjsunit/regress/regress-323845.js
// Begin stripped down and modified version of mjsunit.js for easy minimization in CF.
function MjsUnitAssertionError(message) {}
MjsUnitAssertionError.prototype.toString = function() {
return this.message;
};
var assertSame;
var assertEquals;
var assertEqualsDelta;
var assertArrayEquals;
var assertPropertiesEqual;
var assertToStringEquals;
var assertTrue;
var assertFalse;
var triggerAssertFalse;
var assertNull;
var assertNotNull;
var assertThrows;
var assertDoesNotThrow;
var assertInstanceof;
var assertUnreachable;
var assertOptimized;
var assertUnoptimized;
function classOf(object) {
var string = Object.prototype.toString.call(object);
return string.substring(8, string.length - 1);
}
function PrettyPrint(value) {
return "";
}
function PrettyPrintArrayElement(value, index, array) {
return "";
}
function fail(expectedText, found, name_opt) {}
function deepObjectEquals(a, b) {
var aProps = Object.keys(a);
aProps.sort();
var bProps = Object.keys(b);
bProps.sort();
if (!deepEquals(aProps, bProps)) {
return false;
}
for (var i = 0; i < aProps.length; i++) {
if (!deepEquals(a[aProps[i]], b[aProps[i]])) {
return false;
}
}
return true;
}
function deepEquals(a, b) {
if (a === b) {
if (a === 0) return (1 / a) === (1 / b);
return true;
}
if (typeof a != typeof b) return false;
if (typeof a == "number") return isNaN(a) && isNaN(b);
if (typeof a !== "object" && typeof a !== "function") return false;
var objectClass = classOf(a);
if (objectClass !== classOf(b)) return false;
if (objectClass === "RegExp") {
return (a.toString() === b.toString());
}
if (objectClass === "Function") return false;
if (objectClass === "Array") {
var elementCount = 0;
if (a.length != b.length) {
return false;
}
for (var i = 0; i < a.length; i++) {
if (!deepEquals(a[i], b[i])) return false;
}
return true;
}
if (objectClass == "String" || objectClass == "Number" || objectClass == "Boolean" || objectClass == "Date") {
if (a.valueOf() !== b.valueOf()) return false;
}
return deepObjectEquals(a, b);
}
assertSame = function assertSame(expected, found, name_opt) {
if (found === expected) {
if (expected !== 0 || (1 / expected) == (1 / found)) return;
} else if ((expected !== expected) && (found !== found)) {
return;
}
fail(PrettyPrint(expected), found, name_opt);
};
assertEquals = function assertEquals(expected, found, name_opt) {
if (!deepEquals(found, expected)) {
fail(PrettyPrint(expected), found, name_opt);
}
};
assertEqualsDelta = function assertEqualsDelta(expected, found, delta, name_opt) {
assertTrue(Math.abs(expected - found) <= delta, name_opt);
};
assertArrayEquals = function assertArrayEquals(expected, found, name_opt) {
var start = "";
if (name_opt) {
start = name_opt + " - ";
}
assertEquals(expected.length, found.length, start + "array length");
if (expected.length == found.length) {
for (var i = 0; i < expected.length; ++i) {
assertEquals(expected[i], found[i], start + "array element at index " + i);
}
}
};
assertPropertiesEqual = function assertPropertiesEqual(expected, found, name_opt) {
if (!deepObjectEquals(expected, found)) {
fail(expected, found, name_opt);
}
};
assertToStringEquals = function assertToStringEquals(expected, found, name_opt) {
if (expected != String(found)) {
fail(expected, found, name_opt);
}
};
assertTrue = function assertTrue(value, name_opt) {
assertEquals(true, value, name_opt);
};
assertFalse = function assertFalse(value, name_opt) {
assertEquals(false, value, name_opt);
};
assertNull = function assertNull(value, name_opt) {
if (value !== null) {
fail("null", value, name_opt);
}
};
assertNotNull = function assertNotNull(value, name_opt) {
if (value === null) {
fail("not null", value, name_opt);
}
};
assertThrows = function assertThrows(code, type_opt, cause_opt) {
var threwException = true;
try {
if (typeof code == 'function') {
code();
} else {
eval(code);
}
threwException = false;
} catch (e) {
if (typeof type_opt == 'function') {
assertInstanceof(e, type_opt);
}
if (arguments.length >= 3) {
assertEquals(e.type, cause_opt);
}
return;
}
};
assertInstanceof = function assertInstanceof(obj, type) {
if (!(obj instanceof type)) {
var actualTypeName = null;
var actualConstructor = Object.getPrototypeOf(obj).constructor;
if (typeof actualConstructor == "function") {
actualTypeName = actualConstructor.name || String(actualConstructor);
}
fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + (type.name || type) + ">" + (actualTypeName ? " but of < " + actualTypeName + ">" : ""));
}
};
assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) {
try {
if (typeof code == 'function') {
code();
} else {
eval(code);
}
} catch (e) {
fail("threw an exception: ", e.message || e, name_opt);
}
};
assertUnreachable = function assertUnreachable(name_opt) {
var message = "Fail" + "ure: unreachable";
if (name_opt) {
message += " - " + name_opt;
}
};
var OptimizationStatus = function() {}
assertUnoptimized = function assertUnoptimized(fun, sync_opt, name_opt) {
if (sync_opt === undefined) sync_opt = "";
assertTrue(OptimizationStatus(fun, sync_opt) != 1, name_opt);
}
assertOptimized = function assertOptimized(fun, sync_opt, name_opt) {
if (sync_opt === undefined) sync_opt = "";
assertTrue(OptimizationStatus(fun, sync_opt) != 2, name_opt);
}
triggerAssertFalse = function() {}
try {
console.log;
print = console.log;
alert = console.log;
} catch (e) {}
function runNearStackLimit(f) {
function t() {
try {
t();
} catch (e) {
f();
}
};
try {
t();
} catch (e) {}
}
function quit() {}
function nop() {}
try {
gc;
} catch (e) {
gc = nop;
}
function getRandomProperty(v, rand) {
var properties = Object.getOwnPropertyNames(v);
var proto = Object.getPrototypeOf(v);
if (proto) {
properties = properties.concat(Object.getOwnPropertyNames(proto));
}
if (properties.includes("constructor") && v.constructor.hasOwnProperty("__proto__")) {
properties = properties.concat(Object.getOwnPropertyNames(v.constructor.__proto__));
}
if (properties.length == 0) {
return "0";
}
return properties[rand % properties.length];
}
// End stripped down and modified version of mjsunit.js.
var __v_0 = {};
var __v_1 = {};
var __v_2 = {};
var __v_3 = {};
var __v_4 = -1073741824;
var __v_5 = {};
var __v_6 = 1;
var __v_7 = 1073741823;
var __v_8 = {};
var __v_9 = {};
var __v_10 = 4294967295;
var __v_11 = this;
var __v_12 = {};
var __v_13 = {};
try {
load("test/mjsunit/wasm/wasm-module-__v_1.js");
__v_2 = 0x10000;
} catch (e) {
print("Caught: " + e);
}
function __f_16() {
var __v_1 = new WasmModuleBuilder();
__v_1.addFunction("grow_memory", kSig_i_i)
.addBody([kExprGetLocal, 0, kExprMemoryGrow])
.exportFunc();
__v_1.addFunction("load", kSig_i_i)
.addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0])
.exportFunc();
__v_1.addFunction("store", kSig_i_ii)
.addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0, kExprGetLocal, 1])
.exportFunc();
__v_1.addFunction("load16", kSig_i_i)
.addBody([kExprGetLocal, 0, kExprI32LoadMem16U, 0, 0])
.exportFunc();
__v_1.addFunction("store16", kSig_i_ii)
.addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem16, 0, 0, kExprGetLocal, 1])
.exportFunc();
__v_1.__p_1551105852 = __v_1[getRandomProperty(__v_1, 1551105852)];
__v_1.__defineGetter__(getRandomProperty(__v_1, 348910887), function() {
gc();
__v_9[getRandomProperty(__v_9, 1894652048)] = __v_13[getRandomProperty(__v_13, 1352929371)];
return __v_1.__p_1551105852;
});
__v_1.addFunction("load8", kSig_i_i)
.addBody([kExprGetLocal, 0, kExprI32LoadMem8U, 0, 0])
.exportFunc();
__v_1.addFunction("store8", kSig_i_ii)
.addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem8, 0, 0, kExprGetLocal, 1])
.exportFunc();
return __v_1;
}
function __f_14() {
var __v_4 = __f_16();
__v_1.addMemory(1, 1, false);
var module = __v_1.instantiate();
var __v_3;
function __f_1() {
return module.exports.load(__v_3);
}
function __f_2(value) {
return module.exports.store(__v_3, value);
}
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = __v_2 - 3; __v_3 < __v_2 + 4; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
assertEquals(1, __f_8(3));
for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 4; __v_3 += 4) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = 4 * __v_2 - 3; __v_3 < 4 * __v_2 + 4; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
assertEquals(4, __f_8(15));
for (__v_3 = 4 * __v_2 - 3; __v_3 <= 4 * __v_2 + 4; __v_3 += 4) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = 19 * __v_2 - 10; __v_3 <= 19 * __v_2 - 4; __v_3 += 4) {
__f_2(20);
gc();
assertEquals(12, __f_1());
}
for (__v_3 = 19 * __v_2 - 3; __v_3 < 19 * __v_2 + 5; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
}
try {
__f_14();
} catch (e) {
print("Caught: " + e);
}
function __f_13() {
var __v_1 = __f_16();
__v_1.__defineGetter__(getRandomProperty(__v_1, 1322348896), function() {
gc();
return __f_28(__v_1);
});
__v_1.addMemory(1, 1, false);
var module = __v_1.instantiate();
assertEquals(0, __f_30(0));
var __v_3;
function __f_1() {
return module.exports.load16(__v_3);
}
function __f_2(value) {
return module.exports.store16(__v_3, value);
}
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) {
__f_2(20);
assertEquals(20, __f_1());
__f_19();
}
for (__v_3 = __v_2 - 1; __v_3 < __v_2 + 4; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
assertEquals(65535, __f_8(0));
for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 2; __v_3 += 2) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = 4 * __v_2 - 1; __v_3 < 4 * __v_2 + 4; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
assertEquals(4, __f_8(15));
for (__v_3 = 4 * __v_2 - 2; __v_3 <= 4 * __v_2 + 4; __v_3 += 2) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_1 = 19 * __v_11 - 10; __v_13 <= 19 * __v_2 - 2; __v_9 += 2) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = 19 * __v_2 - 1; __v_3 < 19 * __v_2 + 5; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
}
try {
__f_13();
} catch (e) {
print("Caught: " + e);
}
function __f_10() {
var __v_1 = __f_16();
__v_1.addMemory(1, 1, false);
var module = __v_1.instantiate();
var __v_3;
function __f_1() {
return module.exports.load8(__v_3);
}
function __f_2(value) {
return module.exports.store8(__v_3, value);
}
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
for (__v_3 = 0; __v_3 <= __v_2 - 1; __v_3++) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = __v_2; __v_3 < __v_2 + 4; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
assertEquals(1, __f_8(3));
for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 1; __v_3++) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = 4 * __v_2; __v_3 < 4 * __v_2 + 4; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
assertEquals(4, __f_8(15));
for (__v_3 = 4 * __v_2; __v_3 <= 4 * __v_2 + 4; __v_3++) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = 19 * __v_2 - 10; __v_3 <= 19 * __v_2 - 1; __v_3++) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = 19 * __v_2; __v_3 < 19 * __v_2 + 5; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
assertTraps(kTrapMemOutOfBounds, __f_1);
}
}
try {
__f_10();
} catch (e) {
print("Caught: " + e);
}
function __f_5() {
var __v_1 = __f_16();
var module = __v_1.instantiate();
var __v_3;
function __f_1() {
return module.exports.load(__v_3);
}
function __f_2(value) {
return module.exports.store(__v_3, value);
}
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
assertTraps(kTrapMemOutOfBounds, __f_1);
assertTraps(kTrapMemOutOfBounds, __f_2);
assertEquals(0, __f_8(1));
for (__v_3 = 0; __v_3 <= __v_2 - 4; __v_3++) {
__f_2(20);
assertEquals(20, __f_1());
}
for (__v_3 = __v_2; __v_3 <= __v_2 + 5; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_1);
}
}
try {
__f_5();
} catch (e) {
print("Caught: " + e);
}
function __f_9() {
var __v_1 = __f_16();
var module = __v_1.instantiate();
var __v_4 = 16385;
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
assertEquals(-1, __f_8(__v_13));
}
try {
__f_9();
} catch (e) {
print("Caught: " + e);
}
function __f_12() {
var __v_1 = __f_16();
__v_1.addMemory(1, 1, false);
var module = __v_9.instantiate();
__v_4.__p_1905062277 = __v_4[getRandomProperty(__v_4, 1905062277)];
__v_4.__defineGetter__(getRandomProperty(__v_4, 1764398743), function() {
gc();
__v_0[getRandomProperty(__v_0, 1011363961)] = __v_8[getRandomProperty(__v_8, 1946768258)];
return __v_4.__p_1905062277;
});
var __v_4 = 16384;
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
assertEquals(-1, __f_8(__v_4));
}
try {
__f_12();
} catch (e) {
print("Caught: " + e);
}
function __f_0() {
var __v_1 = __f_16();
var module = __v_1.instantiate();
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
assertEquals(-1, __f_8(-1));
};
try {
__f_0();
} catch (e) {
print("Caught: " + e);
}
function __f_4() {
var __v_1 = __f_16();
__v_1.addMemory(1, 1, false);
__v_1.addFunction("memory_size", kSig_i_v)
.addBody([kExprMemorySize])
.exportFunc();
var module = __v_1.instantiate();
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
function __f_7() {
return module.exports.memory_size();
}
assertEquals(1, __f_7());
assertEquals(1, __f_8(1));
assertEquals(2, __f_7());
}
try {
__f_4();
gc();
} catch (e) {
print("Caught: " + e);
}
function __f_6() {
var __v_1 = __f_16();
__v_1.addMemory(1, 1, false);
var module = __v_1.instantiate();
var __v_3, __v_0;
gc();
function __f_1() {
return module.exports.load(__v_3);
}
function __f_2(value) {
return module.exports.store(__v_3, value);
}
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
gc();
for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) {
__f_2(100000 - __v_3);
__v_3.__defineGetter__(getRandomProperty(__v_3, 764734523), function() {
gc();
return __f_16(__v_3);
});
assertEquals(100000 - __v_3, __f_1());
}
assertEquals(1, __f_8(3));
for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) {
assertEquals(100000 - __v_3, __f_1());
}
}
try {
__f_6();
gc();
} catch (e) {
print("Caught: " + e);
}
function __f_11() {
var __v_1 = __f_16();
__v_1.addMemory(1, 1, false);
var module = __v_2.instantiate();
var __v_3, __v_0;
function __f_1() {
return module.exports.load16(__v_3);
}
function __f_2(value) {
return module.exports.store16(__v_3, value);
}
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) {
__f_2(65535 - __v_3);
assertEquals(65535 - __v_3, __f_1());
}
assertEquals(1, __f_8(3));
for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) {
assertEquals(65535 - __v_3, __f_1());
}
}
try {
__f_11();
} catch (e) {
print("Caught: " + e);
}
function __f_15() {
var __v_1 = __f_16();
__v_1.addMemory(1, 1, false);
var module = __v_1.instantiate();
var __v_3, __v_0 = 0;
function __f_1() {
return module.exports.load8(__v_10);
}
function __f_2(value) {
return module.exports.store8(__v_3, value);
}
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
for (__v_3 = 0; __v_3 <= (__v_2 - 1); __v_3++, __v_0++) {
__f_2(__v_0);
assertEquals(__v_0, __f_1());
if (__v_0 == 255) __v_0 = 0;
}
assertEquals(1, __f_8(3));
__v_0 = 0;
for (__v_10 = 0; __v_4 <= (__v_0 - 1); __v_11++, __v_5++) {
assertEquals(__v_0, __f_1());
if (__v_10 == 255) __v_5 = 0;
}
}
try {
__f_15();
} catch (e) {
print("Caught: " + e);
}
function __f_3() {
var __v_1 = __f_16();
__v_1.addMemory(1, 1, false);
var module = __v_1.instantiate();
var __v_3, __v_0;
function __f_1() {
return module.exports.load(__v_3);
}
function __f_2(value) {
return module.exports.store(__v_3, value);
}
function __f_8(pages) {
return module.exports.grow_memory(pages);
}
gc();
__v_3 = 3 * __v_2 + 4;
assertTraps(kTrapMemOutOfBounds, __f_2);
assertEquals(1, __f_8(1));
assertTraps(kTrapMemOutOfBounds, __f_2);
assertEquals(2, __f_8(1));
assertTraps(kTrapMemOutOfBounds, __f_2);
assertEquals(3, __f_8(1));
for (__v_3 = 3 * __v_2; __v_3 <= 4 * __v_2 - 4; __v_3++) {
__f_2(0xaced);
assertEquals(0xaced, __f_1());
}
for (__v_3 = 4 * __v_2 - 3; __v_3 <= 4 * __v_2 + 4; __v_3++) {
assertTraps(kTrapMemOutOfBounds, __f_2);
}
}
try {
__f_3();
} catch (e) {
print("Caught: " + e);
}
function __f_18(__f_17, y) {
eval(__f_17);
return y();
}
try {
var __v_17 = __f_18("function y() { return 1; }", function() {
return 0;
})
assertEquals(1, __v_17);
gc();
__v_17 =
(function(__f_17) {
function __f_17() {
return 3;
}
return __f_17();
})(function() {
return 2;
});
assertEquals(3, __v_17);
__v_17 =
(function(__f_17) {
function __f_17() {
return 5;
}
return arguments[0]();
})(function() {
return -1073741825;
});
assertEquals(5, __v_17);
} catch (e) {
print("Caught: " + e);
}
function __f_27() {}
try {
var __v_24 = {};
var __v_21 = {};
var __v_22 = {};
var __v_20 = {};
__v_58 = {
instantiateModuleFromAsm: function(text, ffi, heap) {
var __v_21 = eval('(' + text + ')');
if (__f_27()) {
throw "validate failure";
}
var __v_20 = __v_21();
if (__f_27()) {
throw "bad module args";
}
}
};
__f_21 = function __f_21() {
if (found === expected) {
if (1 / expected) return;
} else if ((expected !== expected) && (found !== found)) {
return;
};
};
__f_28 = function __f_28() {
if (!__f_23()) {
__f_125(__f_69(), found, name_opt);
}
};
__f_24 = function __f_24(code, type_opt, cause_opt) {
var __v_24 = true;
try {
if (typeof code == 'function') {
code();
} else {
eval();
}
__v_24 = false;
} catch (e) {
if (typeof type_opt == 'function') {
__f_22();
}
if (arguments.length >= 3) {
__f_28();
}
return;
}
};
__f_22 = function __f_22() {
if (obj instanceof type) {
obj.constructor;
if (typeof __v_57 == "function") {;
};
}
};
try {
__f_28();
__v_82.__p_750895751 = __v_82[getRandomProperty()];
} catch (e) {
"Caught: " + e;
}
__f_19();
gc();
__f_19(19, __f_24);
__f_19();
__f_19();
__f_24(function() {
__v_58.instantiateModuleFromAsm(__f_28.toString()).__f_20();
});
} catch (e) {
print("Caught: " + e);
}
function __f_19() {
"use asm";
function __f_20() {}
return {
__f_20: __f_20
};
}
try {
__f_19();
__f_19();
__f_19();
} catch (e) {
print("Caught: " + e);
}
function __f_29() {}
try {
__f_19();
try {
__f_19();
gc();
__f_25();
} catch (e) {
"Caught: " + e;
}
__f_19();
__f_19();
__f_19();
} catch (e) {
print("Caught: " + e);
}
function __f_23() {
"use asm";
function __f_20() {}
return {
__f_20: __f_20
};
}
try {
__f_19();
__f_19();
__f_19();
__f_19();
gc();
__f_19();
__f_19();
__f_19();
} catch (e) {
print("Caught: " + e);
}
function __f_26(stdlib) {
"use asm";
var __v_2 = new stdlib.Int32Array();
__v_22[4294967295] | 14 + 1 | 14;
return {
__f_20: __f_20
};
}
function __f_25() {
var __v_19 = new ArrayBuffer();
var __v_23 = new Int32Array(__v_19);
var module = __v_58.instantiateModuleFromAsm(__f_26.toString());
__f_28();
gc();
}
try {
(function() {})();
(function() {})();
try {
(function() {
__v_23.__defineGetter__(getRandomProperty(__v_23, 580179357), function() {
gc();
return __f_25(__v_23);
});
var __v_23 = 0x87654321;
__v_19.__f_89();
})();
} catch (e) {;
}
} catch (e) {
print("Caught: " + e);
}
function __f_30(x) {
var __v_30 = x + 1;
var __v_31 = x + 2;
if (x != 0) {
if (x > 0 & x < 100) {
return __v_30;
}
}
return 0;
}
try {
assertEquals(0, __f_30(0));
assertEquals(0, __f_30(0));
%OptimizeFunctionOnNextCall(__f_30);
assertEquals(3, __f_30(2));
} catch (e) {
print("Caught: " + e);
}
function __f_31() {
__f_32.arguments;
}
function __f_32(x) {
__f_31();
}
function __f_33() {
__f_32({});
}
try {
__f_33();
__f_33();
__f_33();
%OptimizeFunctionOnNextCall(__f_33);
__f_33();
gc();
} catch (e) {
print("Caught: " + e);
}