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
3// found in the LICENSE file.
4
5// Flags: --allow-natives-syntax
6
7function push_wrapper(array, value) {
8  array.push(value);
9}
10
11// Test that optimization of Array.push() for non-Arrays works correctly.
12var object = { x : 8, length: 3 };
13object[18] = 5;
14object.__proto__ = Array.prototype;
15push_wrapper(object, 1);
16push_wrapper(object, 1);
17assertEquals(5, object.length);
18%OptimizeFunctionOnNextCall(push_wrapper);
19push_wrapper(object, 1);
20push_wrapper(object, 1);
21assertEquals(8, object.x);
22assertEquals(7, object.length);
23