diff options
Diffstat (limited to 'deps/v8/test/mjsunit/es6/indexed-integer-exotics.js')
-rw-r--r-- | deps/v8/test/mjsunit/es6/indexed-integer-exotics.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/es6/indexed-integer-exotics.js b/deps/v8/test/mjsunit/es6/indexed-integer-exotics.js new file mode 100644 index 0000000000..7aefd78c4f --- /dev/null +++ b/deps/v8/test/mjsunit/es6/indexed-integer-exotics.js @@ -0,0 +1,63 @@ +// 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 + +Object.prototype["10"] = "unreachable"; +Object.prototype["7"] = "unreachable"; +Object.prototype["-1"] = "unreachable"; +Object.prototype["-0"] = "unreachable"; +Object.prototype["4294967296"] = "unreachable"; + +var array = new Int32Array(10); + +function check() { + for (var i = 0; i < 4; i++) { + assertEquals(undefined, array["-1"]); + assertEquals(undefined, array["-0"]); + assertEquals(undefined, array["10"]); + assertEquals(undefined, array["4294967296"]); + } + assertEquals("unreachable", array.__proto__["-1"]); + assertEquals("unreachable", array.__proto__["-0"]); + assertEquals("unreachable", array.__proto__["10"]); + assertEquals("unreachable", array.__proto__["4294967296"]); +} + +check(); + +array["-1"] = "unreachable"; +array["-0"] = "unreachable"; +array["10"] = "unreachable"; +array["4294967296"] = "unreachable"; + +check(); + +delete array["-0"]; +delete array["-1"]; +delete array["10"]; +delete array["4294967296"]; + +assertEquals(undefined, Object.getOwnPropertyDescriptor(array, "-1")); +assertEquals(undefined, Object.getOwnPropertyDescriptor(array, "-0")); +assertEquals(undefined, Object.getOwnPropertyDescriptor(array, "10")); +assertEquals(undefined, Object.getOwnPropertyDescriptor(array, "4294967296")); +assertEquals(10, Object.keys(array).length); + +check(); + +function f() { return array["-1"]; } + +for (var i = 0; i < 3; i++) { + assertEquals(undefined, f()); +} +%OptimizeFunctionOnNextCall(f); +assertEquals(undefined, f()); + +Object.defineProperty(new Int32Array(), "-1", {'value': 1}); +Object.defineProperty(new Int32Array(), "-0", {'value': 1}); +Object.defineProperty(new Int32Array(), "-10", {'value': 1}); +Object.defineProperty(new Int32Array(), "4294967296", {'value': 1}); + +check(); |