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