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