v8/test/mjsunit/compiler/inline-exception-2.js
Michael Starzinger 8d921ca7f3 [turbofan] Remove --turbo shorthand for --turbo-filter.
This removes the --turbo flag and solely relies on the filter pattern
provided via --turbo-filter when deciding whether to use TurboFan. Note
that disabling optimization wholesale can still be done with --no-opt,
which should be used in favor of --no-turbo everywhere.

Also note that this contains semantic changes to the TurboFan activation
criteria. We respect the filter pattern more stringently and no longer
activate TurboFan just because the source contains patterns forcing use
of Ignition via {AstNumberingVisitor::DisableFullCodegenAndCrankshaft}.

R=rmcilroy@chromium.org
BUG=v8:6408

Change-Id: I0c855f6a62350eb62283a3431c8cc1baa750950e
Reviewed-on: https://chromium-review.googlesource.com/528121
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46167}
2017-06-23 11:19:19 +00:00

2064 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) {
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) {
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();