Home | History | Annotate | Download | only in regress
      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
      6 
      7 var shouldThrow = false;
      8 
      9 function h() {
     10   try {  // Prevent inlining in Crankshaft.
     11   } catch(e) { }
     12   var res = g.arguments[0].x;
     13   if (shouldThrow) {
     14     throw res;
     15   }
     16   return res;
     17 }
     18 
     19 function g(o) { h(); }
     20 
     21 function f1() {
     22   var o = { x : 1 };
     23   g(o);
     24   return o.x;
     25 }
     26 
     27 function f2() {
     28   var o = { x : 2 };
     29   g(o);
     30   return o.x;
     31 }
     32 
     33 f1();
     34 f2();
     35 f1();
     36 f2();
     37 %OptimizeFunctionOnNextCall(f1);
     38 %OptimizeFunctionOnNextCall(f2);
     39 shouldThrow = true;
     40 try { f1(); } catch(e) {
     41   assertEquals(e, 1);
     42 }
     43 try { f2(); } catch(e) {
     44   assertEquals(e, 2);
     45 }
     46