12904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 22904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 32904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org// found in the LICENSE file. 42904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org 52904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org// Flags: --allow-natives-syntax 62904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org 72904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.orgfunction set_length(a, l) { 82904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org a.length = l; 92904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org} 102904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org 112904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.orgfunction test1() { 122904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org var l = {}; 132904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org var a = Array(l); 142904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length(a, 3); 152904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length(a, 3); 162904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org assertEquals(3, a.length); 172904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org} 182904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org 192904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.orgfunction test2() { 202904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org var a = []; 212904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length(a, 10); 222904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length(a, 10); 232904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org Object.freeze(a); 242904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length(a, 3); 252904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length(a, 3); 262904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org assertEquals(10, a.length); 272904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org} 282904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org 292904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.orgfunction test3() { 302904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org var a = [2]; 312904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org Object.defineProperty(a, "length", {value:2, writable: false}); 322904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org %ToFastProperties(a); 332904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length([], 10); 342904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length([], 10); 352904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length(a, 10); 362904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org set_length(a, 10); 372904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org assertEquals(2, a.length); 382904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org} 392904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org 402904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.orgtest1(); 412904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.orgtest2(); 422904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.orgtest3(); 43