| 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 --no-always-opt | 5 // Flags: --allow-natives-syntax |
| 6 | |
| 7 assertFalse(isAlwaysOptimize()); | |
| 8 | 6 |
| 9 var v = 0; | 7 var v = 0; |
| 10 | 8 |
| 11 // 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 |
| 12 // property detected and don't lead to overzealous optimization. | 10 // property detected and don't lead to overzealous optimization. |
| 13 var my_array_proto = {}; | 11 var my_array_proto = {}; |
| 14 my_array_proto.__proto__ = [].__proto__; | 12 my_array_proto.__proto__ = [].__proto__; |
| 15 | 13 |
| 16 function push_wrapper_2(array, value) { | 14 function push_wrapper_2(array, value) { |
| 17 array.push(value); | 15 array.push(value); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 35 // Defining accessor should deopt optimized push. | 33 // Defining accessor should deopt optimized push. |
| 36 Object.defineProperty(my_array_proto, "3", { | 34 Object.defineProperty(my_array_proto, "3", { |
| 37 get: function() { return "get " + v; }, | 35 get: function() { return "get " + v; }, |
| 38 set: function(value) { v += value; } | 36 set: function(value) { v += value; } |
| 39 }); | 37 }); |
| 40 assertUnoptimized(push_wrapper_2); | 38 assertUnoptimized(push_wrapper_2); |
| 41 push_wrapper_2(array, 99); | 39 push_wrapper_2(array, 99); |
| 42 assertEquals(4, array.length); | 40 assertEquals(4, array.length); |
| 43 assertEquals(99, v); | 41 assertEquals(99, v); |
| 44 assertEquals("get 99", array[3]); | 42 assertEquals("get 99", array[3]); |
| OLD | NEW |