summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/typed-array-index-out-of-range.js
blob: a0506dfcfc1b95cbe8f891bc05baaa6864047772 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

// Out of bounds writes on typed arrays are uneffectful for all integers.

var x = new Int32Array(10);

function f() {
    for (var i = -100; i < 100; i++) {
	x[i] = i + 1;
	if (i >= 0 && i < 10)
	    assertEq(x[i], i + 1);
	else
	    assertEq(x[i], undefined);
    }
}
f();

// Really big integers not representable with a double or uint64 are still integers.

var bigint = "" + Math.pow(2, 53);
x[bigint] = "twelve";
assertEq(x[bigint], undefined);

x["9999999999999999999999"] = "twelve";
assertEq(x["9999999999999999999999"], undefined);

// Except when their toString() makes them not look like integers!
x[9999999999999999999999] = "twelve";
assertEq(x[9999999999999999999999], "twelve");

// Infinity and -Infinity maybe are supposed to be integers, but they aren't currently.

x["Infinity"] = "twelve";
assertEq(x["Infinity"], "twelve");

x["-Infinity"] = "twelve";
assertEq(x["-Infinity"], "twelve");