summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/cacheir/typedarray-non-int32-index-set.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/cacheir/typedarray-non-int32-index-set.js')
-rw-r--r--js/src/jit-test/tests/cacheir/typedarray-non-int32-index-set.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/cacheir/typedarray-non-int32-index-set.js b/js/src/jit-test/tests/cacheir/typedarray-non-int32-index-set.js
new file mode 100644
index 0000000000..c3a6637516
--- /dev/null
+++ b/js/src/jit-test/tests/cacheir/typedarray-non-int32-index-set.js
@@ -0,0 +1,37 @@
+function set(k) {
+ // Different typed array types to ensure we emit a SetProp IC.
+ var xs = [
+ new Int32Array(10),
+ new Int16Array(10),
+ ];
+
+ for (var i = 0; i < 100; ++i) {
+ var x = xs[i & 1];
+ x[k] = 0;
+ }
+
+ assertEq(xs[0][k], undefined);
+ assertEq(xs[1][k], undefined);
+}
+
+// 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(set)(-1);
+test(set)(-2147483648);
+test(set)(-2147483649);
+
+// Int32 indices must be less-or-equal to max-int32.
+test(set)(2147483648);
+
+// Int32 indices must not have fractional parts.
+test(set)(1.5);
+test(set)(-1.5);
+
+// Non-finite numbers aren't int32 indices.
+test(set)(NaN);
+test(set)(-Infinity);
+test(set)(Infinity);