1 // Copyright 2014 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Flags: --allow-natives-syntax 6 7 function set_length(a, l) { 8 a.length = l; 9 } 10 11 function test1() { 12 var l = {}; 13 var a = Array(l); 14 set_length(a, 3); 15 set_length(a, 3); 16 assertEquals(3, a.length); 17 } 18 19 function test2() { 20 var a = []; 21 set_length(a, 10); 22 set_length(a, 10); 23 Object.freeze(a); 24 set_length(a, 3); 25 set_length(a, 3); 26 assertEquals(10, a.length); 27 } 28 29 function test3() { 30 var a = [2]; 31 Object.defineProperty(a, "length", {value:2, writable: false}); 32 %ToFastProperties(a); 33 set_length([], 10); 34 set_length([], 10); 35 set_length(a, 10); 36 set_length(a, 10); 37 assertEquals(2, a.length); 38 } 39 40 test1(); 41 test2(); 42 test3(); 43