diff options
Diffstat (limited to '')
-rw-r--r-- | js/src/jit-test/tests/ion/idempotentCache.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/idempotentCache.js b/js/src/jit-test/tests/ion/idempotentCache.js new file mode 100644 index 0000000000..6a54bb72e5 --- /dev/null +++ b/js/src/jit-test/tests/ion/idempotentCache.js @@ -0,0 +1,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); |