mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-28 10:13:55 +01:00 
			
		
		
		
	sourceRevisionAtLastExport: 33f2fb0e53d135f0ee17cfccd9d993eb2a6f47de targetRevisionAtLastExport: 31340cbd9add103f586d501b0c3354b7b182abc0
		
			
				
	
	
		
			2064 lines
		
	
	
		
			45 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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();
 |