// 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);