Bug 697343 - Add slice hook test. r=jandem
authorTom Schuster <evilpies@gmail.com>
Thu, 05 Dec 2013 20:07:25 +0100
changeset 159637 56eb22c6f6c7d77e754d46d7858d9f6cfe0be738
parent 159636 0fbdff3a10e38819be92320e95e8a98c93186662
child 159638 d33302ff2866b45212c0d260b028af7803aae8a8
push id25808
push usercbook@mozilla.com
push dateTue, 10 Dec 2013 12:03:31 +0000
treeherdermozilla-central@7fb91a422c5e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjandem
bugs697343
milestone29.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 697343 - Add slice hook test. r=jandem
js/src/jit-test/tests/arrays/slice.js
new file mode 100644
--- /dev/null
+++ b/js/src/jit-test/tests/arrays/slice.js
@@ -0,0 +1,37 @@
+let invoked = false;
+Object.defineProperty(Array.prototype, '0', {set: function () {
+    invoked = true;
+}});
+
+let result = [1, 2, 3].slice(1);
+assertEq(invoked, false);
+
+let proxy = new Proxy({}, {
+    get: function (target, name, proxy) {
+        switch (name) {
+          case "length":
+            return 2;
+          case "0":
+            return 15;
+          case "1":
+            // Should not invoke [[Get]] for this hole.
+          default:
+            assertEq(false, true);
+        }
+    },
+    has: function (target, name) {
+        switch (name) {
+          case "0":
+            return true;
+          case "1":
+            return false;
+          default:
+            assertEq(false, true);
+        }
+    }
+})
+result = Array.prototype.slice.call(proxy, 0);
+assertEq(result.length, 2);
+assertEq(0 in result, true);
+assertEq(1 in result, false);
+assertEq(result[0], 15);