v8/test/mjsunit/regress/wasm/regress-02256.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

970 lines
24 KiB
JavaScript
Raw Normal View History

// 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.
//
Reland "[flags] warn about contradictory flags" This is a reland of b8f91666649b637e87a338f884d7987b169f6692 Difference to previous CL: Additional functionality to specify incompatible flags based on GN variables and extra-flags, used to fix the issues that came up on the waterfall. This also changes the rules regarding repeated flags: While explicitly repeated flags are allowed for boolean values as long as they are identical, repeated flags or explicit flags in the presence of an active implication are disallowed for non-boolean flags. The latter simplifies specifying conflict rules in variants.py. Otherwise a rule like INCOMPATIBLE_FLAGS_PER_EXTRA_FLAG = { "--gc-interval=*": ["--gc-interval=*"], } wouldn't work because specifying the same GC interval twice wouldn't actually count as a conflict. This was an issue with test/mjsunit/wasm/gc-buffer.js, which specifies --gc-interval=500 exactly like the extra flag by the stress bot. Also, this now expands contradictory flags checking to d8 flags for consistency. Original change's description: > [flags] warn about contradictory flags > > Design Doc: https://docs.google.com/document/d/1lkvu8crkK7Ei39qjkPCFijpNyxWXsOktG9GB-7K34jM/ > > Bug: v8:10577 > Change-Id: Ib9cfdffa401c48c895bf31caed5ee03545beddab > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2154792 > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Michael Achenbach <machenbach@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Tamer Tas <tmrts@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68168} Bug: v8:10577 Change-Id: I268e590ee18a535b13dee14eeb15ddd0a9ee8341 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235115 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Tamer Tas <tmrts@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68989}
2020-07-22 10:33:18 +00:00
// Flags: --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([kExprLocalGet, 0, kExprMemoryGrow])
.exportFunc();
__v_1.addFunction("load", kSig_i_i)
.addBody([kExprLocalGet, 0, kExprI32LoadMem, 0, 0])
.exportFunc();
__v_1.addFunction("store", kSig_i_ii)
.addBody([kExprLocalGet, 0, kExprLocalGet, 1, kExprI32StoreMem, 0, 0, kExprLocalGet, 1])
.exportFunc();
__v_1.addFunction("load16", kSig_i_i)
.addBody([kExprLocalGet, 0, kExprI32LoadMem16U, 0, 0])
.exportFunc();
__v_1.addFunction("store16", kSig_i_ii)
.addBody([kExprLocalGet, 0, kExprLocalGet, 1, kExprI32StoreMem16, 0, 0, kExprLocalGet, 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([kExprLocalGet, 0, kExprI32LoadMem8U, 0, 0])
.exportFunc();
__v_1.addFunction("store8", kSig_i_ii)
.addBody([kExprLocalGet, 0, kExprLocalGet, 1, kExprI32StoreMem8, 0, 0, kExprLocalGet, 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 {
%PrepareFunctionForOptimization(__f_30);
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 {
%PrepareFunctionForOptimization(__f_33);
__f_33();
__f_33();
__f_33();
%OptimizeFunctionOnNextCall(__f_33);
__f_33();
gc();
} catch (e) {
print("Caught: " + e);
}