blob: 2f3a597f11fb705f51990de5504e63daa5548094 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +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
7
8(function TestProtoDeopt() {
9 var proto = {};
10
11 function deoptMe() {
12 %DeoptimizeFunction(f);
13 return proto;
14 }
15
16 function checkObject(name, value, o) {
17 assertSame(proto, Object.getPrototypeOf(o));
18 assertTrue(o.hasOwnProperty(name));
19 assertEquals(value, o[name]);
20 }
21
22 function f(name, value) {
23 return { [name]: value, __proto__: deoptMe() };
24 }
25
26 checkObject("a", 1, f("a", 1));
27 checkObject("b", 2, f("b", 2));
28 %OptimizeFunctionOnNextCall(f);
29 checkObject("c", 3, f("c", 3));
30})();