tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 437712a9e466460933a4d854eacb4d2ec87d5053
parent 374129481e266e1ed253d953ecee3182b20ac498
Author: Hannes Verschore <hv1989@gmail.com>
Date:   Thu, 11 Dec 2025 22:43:13 +0000

Bug 1999828: Part 7 - Add tests. r=iain

Differential Revision: https://phabricator.services.mozilla.com/D274208

Diffstat:
Ajs/src/jit-test/tests/cacheir/guard-shape-to-offset-list.js | 28++++++++++++++++++++++++++++
Ajs/src/jit-test/tests/cacheir/ion-store-load-from-offset.js | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajs/src/jit-test/tests/cacheir/ops-guard-shapelist-to-offset.js | 37+++++++++++++++++++++++++++++++++++++
Ajs/src/jit-test/tests/cacheir/ops-using-from-offset.js | 29+++++++++++++++++++++++++++++
Ajs/src/jit-test/tests/cacheir/stored-dynamic-slot-from-offset.js | 34++++++++++++++++++++++++++++++++++
Ajs/src/jit-test/tests/cacheir/stored-fixed-slot-from-offset.js | 28++++++++++++++++++++++++++++
6 files changed, 214 insertions(+), 0 deletions(-)

diff --git a/js/src/jit-test/tests/cacheir/guard-shape-to-offset-list.js b/js/src/jit-test/tests/cacheir/guard-shape-to-offset-list.js @@ -0,0 +1,28 @@ +function test() { + var n = 3; + var arr = []; + for (var i = 0; i < n; i++) { + var obj = {}; + for (var j = 0; j < i+4; j++) { + obj["x_" + i + "_" + j] = 1; + } + arr.push(obj); + } + for (var i = 0; i < n; i++) { + arr[i].a = -1; + arr[i].b = -1; + } + + for (let i=0; i<10000; i++) { + arr[i%n].a = 0; + arr[i%n].b = 1; + } + + + for (var i = 0; i < n; i++) { + assertEq(arr[i].a, 0); + assertEq(arr[i].b, 1); + } +} + +test(); diff --git a/js/src/jit-test/tests/cacheir/ion-store-load-from-offset.js b/js/src/jit-test/tests/cacheir/ion-store-load-from-offset.js @@ -0,0 +1,58 @@ +// |jit-test| --ion-offthread-compile=off; +// +function test(arr, max) { + + // LoadFixedFromOffset + var test = 0; + for (let i=0; i<20; i++) { + test = arr[i%max].a; + } + + // StoreFixedFromOffset + var test = 0; + for (let i=0; i<20; i++) { + arr[i%max].a = i%max; + } + + for (let i=0; i<max; i++) { + assertEq(arr[i].a, i); + } +} + +var arr = []; +arr[0] = {a:0}; +arr[1] = {b:0, a:1}; +arr[2] = {c:0, a:2}; + +// GuardShapeListToOffset (3) +for (let i=0; i<1000; i++) { + test(arr, arr.length); +} + +arr[3] = {d:0, a:3}; + +// GuardShapeListToOffset (4) +for (let i=0; i<1000; i++) { + test(arr, arr.length); +} + +arr[4] = {e:0, a:4}; + +// GuardMultipleShapesToOffset (5) +for (let i=0; i<1000; i++) { + test(arr, arr.length); +} + +arr[5] = {f:0, a:4}; + +// GuardMultipleShapesToOffset (6) +for (let i=0; i<1000; i++) { + test(arr, arr.length); +} + +arr[6] = {g:0, a:4}; + +// GuardMultipleShapesToOffset (7) +for (let i=0; i<1000; i++) { + test(arr, arr.length); +} diff --git a/js/src/jit-test/tests/cacheir/ops-guard-shapelist-to-offset.js b/js/src/jit-test/tests/cacheir/ops-guard-shapelist-to-offset.js @@ -0,0 +1,37 @@ +function test() { + var arr = []; + var num = 2; + for (var i = 0; i < 20; i++) { + var obj = {}; + for (var j = 0; j < i+4; j++) { + obj["x_" + i + "_" + j] = 1; + } + arr.push(obj); + } + for (var i = 0; i < arr.length; i++) { + arr[i].a = 0; + arr[i].b = -i; + } + + for (let i=0; i<10000; i++) { + arr[i%num].a = i%num; + } + + var t = 0; + for (let i=0; i<10000; i++) { + t = arr[i%num].a; + } + + var t = 0; + for (let i=0; i<10000; i++) { + t = arr[i%num].a; + t = arr[i%num].b; + assertEq(t, -(i%num)) + } + + for (let i=0; i<num; i++) { + assertEq(arr[i].a, i); + } +} + +test(); diff --git a/js/src/jit-test/tests/cacheir/ops-using-from-offset.js b/js/src/jit-test/tests/cacheir/ops-using-from-offset.js @@ -0,0 +1,29 @@ +function test() { + var arr = []; + var num = 5; + for (var i = 0; i < 20; i++) { + var obj = {}; + for (var j = 0; j < i+4; j++) { + obj["x_" + i + "_" + j] = 1; + } + arr.push(obj); + } + for (var i = 0; i < arr.length; i++) { + arr[i].a = 0; + } + + for (let i=0; i<10000; i++) { + arr[i%num].a = i%num; + } + + var t = 0; + for (let i=0; i<10000; i++) { + t = arr[i%num].a; + } + + for (let i=0; i<num; i++) { + assertEq(arr[i].a, i); + } +} + +test(); diff --git a/js/src/jit-test/tests/cacheir/stored-dynamic-slot-from-offset.js b/js/src/jit-test/tests/cacheir/stored-dynamic-slot-from-offset.js @@ -0,0 +1,34 @@ +function test() { + var arr = []; + for (var i = 0; i < 20; i++) { + var obj = {}; + for (var j = 0; j < i+4; j++) { + obj["x_" + i + "_" + j] = 1; + } + arr.push(obj); + } + for (var i = 0; i < arr.length; i++) { + arr[i].a = 0; + } + + for (let i=0; i<10000; i++) { + arr[i%9].a = i%9; + } + + assertEq(arr[0].a, 0); + assertEq(arr[1].a, 1); + assertEq(arr[2].a, 2); + assertEq(arr[3].a, 3); + assertEq(arr[4].a, 4); + assertEq(arr[5].a, 5); + assertEq(arr[6].a, 6); + assertEq(arr[7].a, 7); + assertEq(arr[8].a, 8); + + for (let i=0; i<10000; i++) { + var a = arr[i%9].a; + assertEq(a, i%9); + } +} + +test(); diff --git a/js/src/jit-test/tests/cacheir/stored-fixed-slot-from-offset.js b/js/src/jit-test/tests/cacheir/stored-fixed-slot-from-offset.js @@ -0,0 +1,28 @@ +function test() { + var arr = []; + arr[0] = {a:0}; + arr[1] = {b:0, a:0}; + arr[2] = {c:0, a:0}; + arr[3] = {d:0, a:0}; + arr[4] = {e:0, a:0}; + arr[5] = {f:0, a:0}; + arr[6] = {g:0, a:0}; + arr[7] = {h:0, a:0}; + arr[8] = {i:0, a:0}; + + for (let i=0; i<10000; i++) { + arr[i%9].a = ((i%9)==8)?2:1; + } + + assertEq(arr[0].a, 1); + assertEq(arr[1].a, 1); + assertEq(arr[2].a, 1); + assertEq(arr[3].a, 1); + assertEq(arr[4].a, 1); + assertEq(arr[5].a, 1); + assertEq(arr[6].a, 1); + assertEq(arr[7].a, 1); + assertEq(arr[8].a, 2); +} + +test();