OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --allow-natives-syntax | 5 // Flags: --allow-natives-syntax --crankshaft --no-always-opt |
6 | 6 |
7 var v = 0; | 7 var v = 0; |
8 | 8 |
9 // Test that elements setters/getters on prototype chain set after the fact are | 9 // Test that elements setters/getters on prototype chain set after the fact are |
10 // property detected and don't lead to overzealous optimization. | 10 // property detected and don't lead to overzealous optimization. |
11 var my_array_proto = {}; | 11 var my_array_proto = {}; |
12 my_array_proto.__proto__ = [].__proto__; | 12 my_array_proto.__proto__ = [].__proto__; |
13 | 13 |
14 function push_wrapper_2(array, value) { | 14 function push_wrapper_2(array, value) { |
15 array.push(value); | 15 array.push(value); |
(...skipping 17 matching lines...) Expand all Loading... |
33 // Defining accessor should deopt optimized push. | 33 // Defining accessor should deopt optimized push. |
34 Object.defineProperty(my_array_proto, "3", { | 34 Object.defineProperty(my_array_proto, "3", { |
35 get: function() { return "get " + v; }, | 35 get: function() { return "get " + v; }, |
36 set: function(value) { v += value; } | 36 set: function(value) { v += value; } |
37 }); | 37 }); |
38 assertUnoptimized(push_wrapper_2); | 38 assertUnoptimized(push_wrapper_2); |
39 push_wrapper_2(array, 99); | 39 push_wrapper_2(array, 99); |
40 assertEquals(4, array.length); | 40 assertEquals(4, array.length); |
41 assertEquals(99, v); | 41 assertEquals(99, v); |
42 assertEquals("get 99", array[3]); | 42 assertEquals("get 99", array[3]); |
OLD | NEW |