1a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 2a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 3a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org// found in the LICENSE file. 4a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org 5a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org// Flags: --allow-natives-syntax --deopt-every-n-times=5 --nodead-code-elimination 6a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org 7a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgvar array = []; 8a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org 9a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgfunction push(array, value) { 10a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org array.push(value); 11a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org} 12a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org 13a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgpush(array, 0); 14a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgpush(array, 1); 15a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgpush(array, 2); 16a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org%OptimizeFunctionOnNextCall(push); 17a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgpush(array, 3); 18a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org 19a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgvar v = 0; 20a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgObject.defineProperty(Array.prototype, "4", { 21a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org get: function() { return 100; }, 22a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org set: function(value) { v = value; } 23a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org}); 24a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org 25a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgpush(array, 4); 26a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.org 27a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgassertEquals(5, array.length); 28a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgassertEquals(100, array[4]); 29a77ec9c2cf67e5b9c707fe42f33574526fed189amachenbach@chromium.orgassertEquals(4, v); 30