1 // Copyright 2015 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Flags: --allow-natives-syntax --turbo-osr 6 7 function OSRInsideTry(x) { 8 try { 9 for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } 10 throw x; 11 } catch (e) { 12 return e + 1; 13 } 14 return x + 2; 15 } 16 assertEquals(24, OSRInsideTry(23)); 17 18 19 function OSRInsideCatch(x) { 20 try { 21 throw x; 22 } catch (e) { 23 for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } 24 return e + 1; 25 } 26 return x + 2; 27 } 28 assertEquals(24, OSRInsideCatch(23)); 29 30 31 function OSRInsideFinally_Return(x) { 32 try { 33 throw x; 34 } finally { 35 for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } 36 return x + 1; 37 } 38 return x + 2; 39 } 40 assertEquals(24, OSRInsideFinally_Return(23)); 41 42 43 function OSRInsideFinally_ReThrow(x) { 44 try { 45 throw x; 46 } finally { 47 for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } 48 } 49 return x + 2; 50 } 51 assertThrows("OSRInsideFinally_ReThrow(new Error)", Error); 52