Home | History | Annotate | Download | only in regress
      1 // Copyright 2014 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 function foo(x) {
      8   var k = "value";
      9   return x[k] = 1;
     10 }
     11 var obj = {};
     12 Object.defineProperty(obj, "value", {set: function(x) { throw "nope"; }});
     13 try { foo(obj); } catch(e) {}
     14 try { foo(obj); } catch(e) {}
     15 %OptimizeFunctionOnNextCall(foo);
     16 try { foo(obj); } catch(e) {}
     17 
     18 function bar(x) {
     19   var k = "value";
     20   return (x[k] = 1) ? "ok" : "nope";
     21 }
     22 var obj2 = {};
     23 Object.defineProperty(obj2, "value",
     24     {set: function(x) { throw "nope"; return true; } });
     25 
     26 try { bar(obj2); } catch(e) {}
     27 try { bar(obj2); } catch(e) {}
     28 %OptimizeFunctionOnNextCall(bar);
     29 try { bar(obj2); } catch(e) {}
     30