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