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 Object.defineProperty(Array.prototype, "1", { 8 get: function() { return "element 1"; }, 9 set: function(value) { } 10 }); 11 function test(array) { 12 array.shift(); 13 return array; 14 } 15 16 var result = test(["0",,2]); 17 assertEquals(["element 1","element 1"], result); 18 assertTrue(result.hasOwnProperty("0")); 19 assertFalse(result.hasOwnProperty("1")); 20 result = test([{},,{}]); 21 assertEquals(["element 1","element 1"], result); 22 assertTrue(result.hasOwnProperty("0")); 23 assertFalse(result.hasOwnProperty("1")); 24 %OptimizeFunctionOnNextCall(test); 25 result = test([{},,0]); 26 assertEquals(["element 1","element 1"], result); 27 assertTrue(result.hasOwnProperty("0")); 28 assertFalse(result.hasOwnProperty("1")); 29