Home | History | Annotate | Download | only in compiler
      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