summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/ion/idempotentCache.js
blob: 6a54bb72e50e675b018e137cce7b54265e438391 (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
// Test that we don't attach ICs to idempotent caches that are incompatible
// with the cache result type.

var missingObjs = [{a:1},Object.create({a:2}),{}];
function testMissing(limit)
{
    var res = 0;
    for (var i = 0; i < 1000; i++) {
	for (var j = 0; j < missingObjs.length; j++) {
	    var obj = missingObjs[j];
	    if (j < limit)
		res += obj.a;
	}
    }
    return res;
}
assertEq(testMissing(2), 3000);
assertEq(testMissing(3), NaN);

var lengthObjs = [{length:{a:1}},Object.create({length:{a:2}}),[0,1]];
function testArrayLength(limit)
{
    var res = 0;
    for (var i = 0; i < 1000; i++) {
	for (var j = 0; j < lengthObjs.length; j++) {
	    var obj = lengthObjs[j];
	    if (j < limit)
		res += obj.length.a;
	}
    }
    return res;
}
assertEq(testArrayLength(2), 3000);
assertEq(testArrayLength(3), NaN);