| // Copyright 2014 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flags: --allow-natives-syntax |
| |
| function push_wrapper(array, value) { |
| array.push(value); |
| } |
| |
| %PrepareFunctionForOptimization(push_wrapper); |
| |
| // Test that optimization of Array.push() for non-Arrays works correctly. |
| var object = { x : 8, length: 3 }; |
| object[18] = 5; |
| object.__proto__ = Array.prototype; |
| push_wrapper(object, 1); |
| push_wrapper(object, 1); |
| assertEquals(5, object.length); |
| %OptimizeFunctionOnNextCall(push_wrapper); |
| push_wrapper(object, 1); |
| push_wrapper(object, 1); |
| assertEquals(8, object.x); |
| assertEquals(7, object.length); |