blob: 589fb88443b2a4742e2334d4e5ea2ead6cbcd3bf [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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) {}