summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/cacheir/typedarray-non-int32-index-has.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/cacheir/typedarray-non-int32-index-has.js')
-rw-r--r--js/src/jit-test/tests/cacheir/typedarray-non-int32-index-has.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/cacheir/typedarray-non-int32-index-has.js b/js/src/jit-test/tests/cacheir/typedarray-non-int32-index-has.js
new file mode 100644
index 0000000000..47eda321ad
--- /dev/null
+++ b/js/src/jit-test/tests/cacheir/typedarray-non-int32-index-has.js
@@ -0,0 +1,37 @@
+function has(k) {
+ // Different typed array types to ensure we emit a HasProp IC.
+ var xs = [
+ new Int32Array(10),
+ new Int16Array(10),
+ ];
+
+ // Doesn't read values from the prototype chain.
+ Object.prototype[k] = 1;
+
+ for (var i = 0; i < 100; ++i) {
+ var x = xs[i & 1];
+ assertEq(k in x, false);
+ }
+}
+
+// Make sure we use a distinct function for each test.
+function test(fn) {
+ return Function(`return ${fn};`)();
+}
+
+// Negative numbers values aren't int32 indices.
+test(has)(-1);
+test(has)(-2147483648);
+test(has)(-2147483649);
+
+// Int32 indices must be less-or-equal to max-int32.
+test(has)(2147483648);
+
+// Int32 indices must not have fractional parts.
+test(has)(1.5);
+test(has)(-1.5);
+
+// Non-finite numbers aren't int32 indices.
+test(has)(NaN);
+test(has)(-Infinity);
+test(has)(Infinity);