1202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved.
2202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be
3202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org// found in the LICENSE file.
4202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org
5202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org// Flags: --allow-natives-syntax
6202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org
7202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgvar array = [];
8202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org
9202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgfunction push(array, value) {
10202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org  array.push(value);
11202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org}
12202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org
13202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgpush(array, 0);
14202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgpush(array, 1);
15202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgpush(array, 2);
16202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org%OptimizeFunctionOnNextCall(push);
17202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgpush(array, 3);
18202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org
19202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgvar v = 0;
20202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgObject.defineProperty(Array.prototype, "4", {
21202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org  get: function() { return 100; },
22202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org  set: function(value) { v = value; }
23202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org});
24202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org
25202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgpush(array, 4);
26202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.org
27202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgassertEquals(5, array.length);
28202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgassertEquals(100, array[4]);
29202b1d8cd93e567672cc92f48fedc35989c47312machenbach@chromium.orgassertEquals(4, v);
30