v8/test/mjsunit/compiler/inline-exception-2.js
Ross McIlroy 31a3cfbc10 [Test] Add PrepareForOptimization to mjsunit/compiler
BUG=v8:8801

Change-Id: I9d9d9824c6c9ad0176bbfd3723da1b578b17c256
Reviewed-on: https://chromium-review.googlesource.com/c/1495555
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60001}
2019-03-04 12:25:41 +00:00

2066 lines
45 KiB
JavaScript

// Shard 2.
// 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: --allow-natives-syntax --no-always-opt
// This test file was generated by tools/gen-inlining-tests.py .
// Global variables
var deopt = undefined; // either true or false
var counter = 0;
function resetState() {
counter = 0;
}
function warmUp(f) {
try {
f();
} catch (ex) {
// ok
}
try {
f();
} catch (ex) {
// ok
}
}
function resetOptAndAssertResultEquals(expected, f) {
%PrepareFunctionForOptimization(f);
warmUp(f);
resetState();
// %DebugPrint(f);
eval("'dont optimize this function itself please, but do optimize f'");
%OptimizeFunctionOnNextCall(f);
assertEquals(expected, f());
}
function resetOptAndAssertThrowsWith(expected, f) {
%PrepareFunctionForOptimization(f);
warmUp(f);
resetState();
// %DebugPrint(f);
eval("'dont optimize this function itself please, but do optimize f'");
%OptimizeFunctionOnNextCall(f);
try {
var result = f();
fail("resetOptAndAssertThrowsWith",
"exception: " + expected,
"result: " + result);
} catch (ex) {
assertEquals(expected, ex);
}
}
function increaseAndReturn15() {
if (deopt) %DeoptimizeFunction(f);
counter++;
return 15;
}
function increaseAndThrow42() {
if (deopt) %DeoptimizeFunction(f);
counter++;
throw 42;
}
function increaseAndReturn15_noopt_inner() {
if (deopt) %DeoptimizeFunction(f);
counter++;
return 15;
}
%NeverOptimizeFunction(increaseAndReturn15_noopt_inner);
function increaseAndThrow42_noopt_inner() {
if (deopt) %DeoptimizeFunction(f);
counter++;
throw 42;
}
%NeverOptimizeFunction(increaseAndThrow42_noopt_inner);
// Alternative 1
function returnOrThrow(doReturn) {
if (doReturn) {
return increaseAndReturn15();
} else {
return increaseAndThrow42();
}
}
// Alternative 2
function increaseAndReturn15_calls_noopt() {
return increaseAndReturn15_noopt_inner();
}
function increaseAndThrow42_calls_noopt() {
return increaseAndThrow42_noopt_inner();
}
// Alternative 3.
// When passed either {increaseAndReturn15} or {increaseAndThrow42}, it acts
// as the other one.
function invertFunctionCall(f) {
var result;
try {
result = f();
} catch (ex) {
return ex - 27;
}
throw result + 27;
}
// Alternative 4: constructor
function increaseAndStore15Constructor() {
if (deopt) %DeoptimizeFunction(f);
++counter;
this.x = 15;
}
function increaseAndThrow42Constructor() {
if (deopt) %DeoptimizeFunction(f);
++counter;
this.x = 42;
throw this.x;
}
// Alternative 5: property
var magic = {};
Object.defineProperty(magic, 'prop', {
get: function () {
if (deopt) %DeoptimizeFunction(f);
return 15 + 0 * ++counter;
},
set: function(x) {
// argument should be 37
if (deopt) %DeoptimizeFunction(f);
counter -= 36 - x; // increments counter
throw 42;
}
})
// Generate type feedback.
assertEquals(15, increaseAndReturn15_calls_noopt());
assertThrowsEquals(function() { return increaseAndThrow42_noopt_inner() }, 42);
assertEquals(15, (new increaseAndStore15Constructor()).x);
assertThrowsEquals(function() {
return (new increaseAndThrow42Constructor()).x;
},
42);
function runThisShard() {
// Variant flags: [alternativeFn3, tryReturns, doCatch,
// catchReturns, deopt]
f = function f___3___r__cr______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn3, tryReturns, doCatch,
// catchReturns, catchWithLocal]
f = function f___3___r__crl______ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn3, tryReturns, doCatch,
// catchReturns, catchWithLocal, deopt]
f = function f___3___r__crl_____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn3, tryReturns, doCatch,
// catchReturns, catchWithLocal, endReturnLocal]
f = function f___3___r__crl____l_ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn3, tryReturns, doCatch,
// catchReturns, catchWithLocal, endReturnLocal, deopt]
f = function f___3___r__crl____ld () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch]
f = function f___3___r_lc________ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, deopt]
f = function f___3___r_lc_______d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, endReturnLocal]
f = function f___3___r_lc______l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, endReturnLocal, deopt]
f = function f___3___r_lc______ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchThrows]
f = function f___3___r_lc__t_____ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchThrows, deopt]
f = function f___3___r_lc__t____d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchThrows, endReturnLocal]
f = function f___3___r_lc__t___l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchThrows, endReturnLocal, deopt]
f = function f___3___r_lc__t___ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchWithLocal]
f = function f___3___r_lc_l______ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchWithLocal, deopt]
f = function f___3___r_lc_l_____d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchWithLocal, endReturnLocal]
f = function f___3___r_lc_l____l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchWithLocal, endReturnLocal, deopt]
f = function f___3___r_lc_l____ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchWithLocal, catchThrows]
f = function f___3___r_lc_lt_____ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchWithLocal, catchThrows, deopt]
f = function f___3___r_lc_lt____d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchWithLocal, catchThrows, endReturnLocal]
f = function f___3___r_lc_lt___l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchWithLocal, catchThrows, endReturnLocal, deopt]
f = function f___3___r_lc_lt___ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchReturns]
f = function f___3___r_lcr_______ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchReturns, deopt]
f = function f___3___r_lcr______d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchReturns, endReturnLocal]
f = function f___3___r_lcr_____l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchReturns, endReturnLocal, deopt]
f = function f___3___r_lcr_____ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchReturns, catchWithLocal]
f = function f___3___r_lcrl______ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchReturns, catchWithLocal, deopt]
f = function f___3___r_lcrl_____d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchReturns, catchWithLocal, endReturnLocal]
f = function f___3___r_lcrl____l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryReturns, tryResultToLocal,
// doCatch, catchReturns, catchWithLocal, endReturnLocal, deopt]
f = function f___3___r_lcrl____ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndThrow42);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(912, f);
assertEquals(4, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch]
f = function f___3__t___c________ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, deopt]
f = function f___3__t___c_______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, catchThrows]
f = function f___3__t___c__t_____ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, catchThrows,
// deopt]
f = function f___3__t___c__t____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch,
// catchWithLocal]
f = function f___3__t___c_l______ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch,
// catchWithLocal, deopt]
f = function f___3__t___c_l_____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch,
// catchWithLocal, endReturnLocal]
f = function f___3__t___c_l____l_ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(935, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch,
// catchWithLocal, endReturnLocal, deopt]
f = function f___3__t___c_l____ld () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(935, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch,
// catchWithLocal, catchThrows]
f = function f___3__t___c_lt_____ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch,
// catchWithLocal, catchThrows, deopt]
f = function f___3__t___c_lt____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch,
// catchWithLocal, catchThrows, endReturnLocal]
f = function f___3__t___c_lt___l_ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch,
// catchWithLocal, catchThrows, endReturnLocal, deopt]
f = function f___3__t___c_lt___ld () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns]
f = function f___3__t___cr_______ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns,
// deopt]
f = function f___3__t___cr______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns,
// catchWithLocal]
f = function f___3__t___crl______ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(890, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns,
// catchWithLocal, deopt]
f = function f___3__t___crl_____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(890, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns,
// catchWithLocal, endReturnLocal]
f = function f___3__t___crl____l_ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(890, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns,
// catchWithLocal, endReturnLocal, deopt]
f = function f___3__t___crl____ld () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(890, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch]
f = function f___3__t__lc________ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, deopt]
f = function f___3__t__lc_______d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, endReturnLocal]
f = function f___3__t__lc______l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(893, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, endReturnLocal, deopt]
f = function f___3__t__lc______ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(893, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchThrows]
f = function f___3__t__lc__t_____ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchThrows, deopt]
f = function f___3__t__lc__t____d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchThrows, endReturnLocal]
f = function f___3__t__lc__t___l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchThrows, endReturnLocal, deopt]
f = function f___3__t__lc__t___ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchWithLocal]
f = function f___3__t__lc_l______ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchWithLocal, deopt]
f = function f___3__t__lc_l_____d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchWithLocal, endReturnLocal]
f = function f___3__t__lc_l____l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(935, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchWithLocal, endReturnLocal, deopt]
f = function f___3__t__lc_l____ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
local += ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(935, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchWithLocal, catchThrows]
f = function f___3__t__lc_lt_____ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchWithLocal, catchThrows, deopt]
f = function f___3__t__lc_lt____d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchWithLocal, catchThrows, endReturnLocal]
f = function f___3__t__lc_lt___l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchWithLocal, catchThrows, endReturnLocal, deopt]
f = function f___3__t__lc_lt___ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchReturns]
f = function f___3__t__lcr_______ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchReturns, deopt]
f = function f___3__t__lcr______d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchReturns, endReturnLocal]
f = function f___3__t__lcr_____l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchReturns, endReturnLocal, deopt]
f = function f___3__t__lcr_____ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchReturns, catchWithLocal]
f = function f___3__t__lcrl______ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(890, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchReturns, catchWithLocal, deopt]
f = function f___3__t__lcrl_____d () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(890, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchReturns, catchWithLocal, endReturnLocal]
f = function f___3__t__lcrl____l_ () {
var local = 888;
deopt = false;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(890, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn3, tryThrows, tryResultToLocal,
// doCatch, catchReturns, catchWithLocal, endReturnLocal, deopt]
f = function f___3__t__lcrl____ld () {
var local = 888;
deopt = true;
try {
counter++;
local += 4 + invertFunctionCall(increaseAndReturn15);
counter++;
} catch (ex) {
counter++;
return 2 + local;
counter++;
}
counter++;
return 5 + local;
}
resetOptAndAssertResultEquals(890, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn4, tryReturns, doCatch]
f = function f__4____r__c________ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (new increaseAndStore15Constructor()).x;
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn4, tryReturns, doCatch, deopt]
f = function f__4____r__c_______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (new increaseAndStore15Constructor()).x;
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn4, tryReturns, doCatch, catchThrows]
f = function f__4____r__c__t_____ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (new increaseAndStore15Constructor()).x;
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn4, tryReturns, doCatch, catchThrows,
// deopt]
f = function f__4____r__c__t____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (new increaseAndStore15Constructor()).x;
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn4, tryReturns, doCatch,
// catchReturns]
f = function f__4____r__cr_______ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (new increaseAndStore15Constructor()).x;
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn4, tryReturns, doCatch,
// catchReturns, deopt]
f = function f__4____r__cr______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (new increaseAndStore15Constructor()).x;
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn4, tryThrows, doCatch]
f = function f__4___t___c________ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (new increaseAndThrow42Constructor()).x;
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn4, tryThrows, doCatch, deopt]
f = function f__4___t___c_______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (new increaseAndThrow42Constructor()).x;
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn4, tryThrows, doCatch, catchThrows]
f = function f__4___t___c__t_____ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (new increaseAndThrow42Constructor()).x;
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn4, tryThrows, doCatch, catchThrows,
// deopt]
f = function f__4___t___c__t____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (new increaseAndThrow42Constructor()).x;
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn4, tryThrows, doCatch, catchReturns]
f = function f__4___t___cr_______ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (new increaseAndThrow42Constructor()).x;
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn4, tryThrows, doCatch, catchReturns,
// deopt]
f = function f__4___t___cr______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (new increaseAndThrow42Constructor()).x;
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn5, tryReturns, doCatch]
f = function f_5_____r__c________ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + magic.prop /* returns 15 */;
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn5, tryReturns, doCatch, deopt]
f = function f_5_____r__c_______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + magic.prop /* returns 15 */;
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn5, tryReturns, doCatch, catchThrows]
f = function f_5_____r__c__t_____ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + magic.prop /* returns 15 */;
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn5, tryReturns, doCatch, catchThrows,
// deopt]
f = function f_5_____r__c__t____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + magic.prop /* returns 15 */;
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn5, tryReturns, doCatch,
// catchReturns]
f = function f_5_____r__cr_______ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + magic.prop /* returns 15 */;
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn5, tryReturns, doCatch,
// catchReturns, deopt]
f = function f_5_____r__cr______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + magic.prop /* returns 15 */;
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(19, f);
assertEquals(2, counter);
// Variant flags: [alternativeFn5, tryThrows, doCatch]
f = function f_5____t___c________ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (magic.prop = 37 /* throws 42 */);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn5, tryThrows, doCatch, deopt]
f = function f_5____t___c_______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (magic.prop = 37 /* throws 42 */);
counter++;
} catch (ex) {
counter++;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(undefined, f);
assertEquals(5, counter);
// Variant flags: [alternativeFn5, tryThrows, doCatch, catchThrows]
f = function f_5____t___c__t_____ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (magic.prop = 37 /* throws 42 */);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn5, tryThrows, doCatch, catchThrows,
// deopt]
f = function f_5____t___c__t____d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (magic.prop = 37 /* throws 42 */);
counter++;
} catch (ex) {
counter++;
throw 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertThrowsWith(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn5, tryThrows, doCatch, catchReturns]
f = function f_5____t___cr_______ () {
var local = 888;
deopt = false;
try {
counter++;
return 4 + (magic.prop = 37 /* throws 42 */);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
// Variant flags: [alternativeFn5, tryThrows, doCatch, catchReturns,
// deopt]
f = function f_5____t___cr______d () {
var local = 888;
deopt = true;
try {
counter++;
return 4 + (magic.prop = 37 /* throws 42 */);
counter++;
} catch (ex) {
counter++;
return 2 + ex;
counter++;
}
counter++;
}
resetOptAndAssertResultEquals(44, f);
assertEquals(3, counter);
}
%NeverOptimizeFunction(runThisShard);
// 95 tests in this shard.
// 192 tests up to here.
runThisShard();