18496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 28496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 38496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org// found in the LICENSE file. 48496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org 58496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org// Flags: --allow-natives-syntax 68496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org 78496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgfunction push_wrapper(array, value) { 88496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org array.push(value); 98496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org} 108496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org 118496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org// Test that optimization of Array.push() for non-Arrays works correctly. 128496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgvar object = { x : 8, length: 3 }; 138496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgobject[18] = 5; 148496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgobject.__proto__ = Array.prototype; 158496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgpush_wrapper(object, 1); 168496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgpush_wrapper(object, 1); 178496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgassertEquals(5, object.length); 188496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.org%OptimizeFunctionOnNextCall(push_wrapper); 198496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgpush_wrapper(object, 1); 208496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgpush_wrapper(object, 1); 218496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgassertEquals(8, object.x); 228496027a525ad457b6d5729faf41f29100a27264machenbach@chromium.orgassertEquals(7, object.length); 23