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/cacheir/has.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.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/cacheir/has.js')
-rw-r--r-- | js/src/jit-test/tests/cacheir/has.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/cacheir/has.js b/js/src/jit-test/tests/cacheir/has.js new file mode 100644 index 0000000000..86fcd990c9 --- /dev/null +++ b/js/src/jit-test/tests/cacheir/has.js @@ -0,0 +1,49 @@ +var max = 40; +setJitCompilerOption("ion.warmup.trigger", max - 10); + +function simple() { + var array = [{a: 1}, {b: 1, a: 1}, {c: 1, a: 1}]; + for (var i = 0; i < array.length; i++) { + var x = array[i]; + assertEq("a" in x, true); + assertEq("d" in x, false); + } +} + +function megamorphic() { + var array = [{a: 1}, {b: 1, a: 1}, {c: 1, a: 1}, + {a: 1, b: 1}, {c: 1, e: 1, a: 1}, + {__proto__:{e: 1, f: 1, a: 1, g: 1}}, + {__proto__:{e: 1, f: 1, a: 1, g: 1, h: 1}}]; + for (var i = 0; i < array.length; i++) { + var x = array[i]; + assertEq("a" in x, true); + assertEq("d" in x, false); + } +} + +function proto() { + var base = {a: 1}; + var array = [{__proto__: base}, + {__proto__: base, b: 1, a: 1}, + {__proto__: base, c: 1, a: 1}]; + for (var j = 0; j < 2; j++) { + for (var i = 0; i < array.length; i++) { + var x = array[i]; + assertEq("a" in x, true); + assertEq("d" in x, (j > 0)); + } + base.d = 1; // Define property on prototype + } +} + +function test() { + for (var i = 0; i < max; i++) { + simple(); + megamorphic(); + proto(); + } +} + +test(); +test(); |