| Index: test/mjsunit/array-push-unshift-read-only-length.js
|
| diff --git a/test/mjsunit/array-push-unshift-read-only-length.js b/test/mjsunit/array-push-unshift-read-only-length.js
|
| deleted file mode 100644
|
| index 67aa39787aaf8b6f1b0febc15f4d7394782587a6..0000000000000000000000000000000000000000
|
| --- a/test/mjsunit/array-push-unshift-read-only-length.js
|
| +++ /dev/null
|
| @@ -1,107 +0,0 @@
|
| -// Copyright 2014 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Flags: --allow-natives-syntax
|
| -
|
| -function test(mode) {
|
| - var a = [];
|
| - Object.defineProperty(a, "length", { writable : false});
|
| -
|
| - function check(f) {
|
| - try {
|
| - f(a);
|
| - } catch(e) { }
|
| - assertFalse(0 in a);
|
| - assertEquals(0, a.length);
|
| - }
|
| -
|
| - function push(a) {
|
| - a.push(3);
|
| - }
|
| -
|
| - if (mode == "fast properties") %ToFastProperties(a);
|
| -
|
| - check(push);
|
| - check(push);
|
| - check(push);
|
| - %OptimizeFunctionOnNextCall(push);
|
| - check(push);
|
| -
|
| - function unshift(a) {
|
| - a.unshift(3);
|
| - }
|
| -
|
| - check(unshift);
|
| - check(unshift);
|
| - check(unshift);
|
| - %OptimizeFunctionOnNextCall(unshift);
|
| - check(unshift);
|
| -}
|
| -
|
| -test("fast properties");
|
| -
|
| -test("normalized");
|
| -
|
| -var b = [];
|
| -Object.defineProperty(b.__proto__, "0", {
|
| - set : function(v) {
|
| - b.x = v;
|
| - Object.defineProperty(b, "length", { writable : false });
|
| - },
|
| - get: function() {
|
| - return b.x;
|
| - }
|
| -});
|
| -
|
| -b = [];
|
| -try {
|
| - b.push(3, 4, 5);
|
| -} catch(e) { }
|
| -assertFalse(1 in b);
|
| -assertFalse(2 in b);
|
| -assertEquals(0, b.length);
|
| -
|
| -b = [];
|
| -try {
|
| - b.unshift(3, 4, 5);
|
| -} catch(e) { }
|
| -assertFalse(1 in b);
|
| -assertFalse(2 in b);
|
| -assertEquals(0, b.length);
|
| -
|
| -b = [1, 2];
|
| -try {
|
| - b.unshift(3, 4, 5);
|
| -} catch(e) { }
|
| -assertEquals(3, b[0]);
|
| -assertEquals(4, b[1]);
|
| -assertEquals(5, b[2]);
|
| -assertEquals(1, b[3]);
|
| -assertEquals(2, b[4]);
|
| -assertEquals(5, b.length);
|
| -
|
| -b = [1, 2];
|
| -
|
| -Object.defineProperty(b.__proto__, "4", {
|
| - set : function(v) {
|
| - b.z = v;
|
| - Object.defineProperty(b, "length", { writable : false });
|
| - },
|
| - get: function() {
|
| - return b.z;
|
| - }
|
| -});
|
| -
|
| -try {
|
| - b.unshift(3, 4, 5);
|
| -} catch(e) { }
|
| -
|
| -// TODO(ulan): According to the ECMA-262 unshift should throw an exception
|
| -// when moving b[0] to b[3] (see 15.4.4.13 step 6.d.ii). This is difficult
|
| -// to do with our current implementation of SmartMove() in src/array.js and
|
| -// it will regress performance. Uncomment the following line once acceptable
|
| -// solution is found:
|
| -// assertFalse(2 in b);
|
| -// assertFalse(3 in b);
|
| -// assertEquals(2, b.length);
|
|
|