diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /js/src/jit-test/tests/ion/idempotentCache.js | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/ion/idempotentCache.js')
-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); |