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/xdr/decode-off-thread.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/xdr/decode-off-thread.js')
-rw-r--r-- | js/src/jit-test/tests/xdr/decode-off-thread.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/xdr/decode-off-thread.js b/js/src/jit-test/tests/xdr/decode-off-thread.js new file mode 100644 index 0000000000..844fa50342 --- /dev/null +++ b/js/src/jit-test/tests/xdr/decode-off-thread.js @@ -0,0 +1,58 @@ +// |jit-test| skip-if: helperThreadCount() === 0 + +function evalWithCacheLoadOffThread(code, ctx) { + ctx = ctx || {}; + ctx = Object.create(ctx, { + fileName: { value: "evalWithCacheCode.js" }, + lineNumber: { value: 0 } + }); + code = code instanceof Object ? code : cacheEntry(code); + + var incremental = ctx.incremental || false; + + // We create a new global ... + if (!("global" in ctx)) + ctx.global = newGlobal({ cloneSingletons: !incremental }); + + var ctx_save; + if (incremental) + ctx_save = Object.create(ctx, {saveIncrementalBytecode: { value: true } }); + else + ctx_save = Object.create(ctx, {saveBytecode: { value: true } }); + + ctx.global.generation = 0; + evaluate(code, ctx_save); + + offThreadDecodeScript(code, ctx); + ctx.global.eval(`runOffThreadDecodedScript()`); +} + +var test; + +// Decode a constant. +test = ` + 1; +`; +evalWithCacheLoadOffThread(test, {}); +evalWithCacheLoadOffThread(test, { incremental: true }); + +// Decode object literals. +test = ` + var obj = { a: 1, b: 2 }; + obj.a++; + assertEq(obj.a, 2); +`; +evalWithCacheLoadOffThread(test, {}); +evalWithCacheLoadOffThread(test, { incremental: true }); + +// Decode functions. +test = ` + function g() { + return function f() { return 1; }; + }; + assertEq(g()(), 1); +`; +evalWithCacheLoadOffThread(test, {}); +evalWithCacheLoadOffThread(test, { incremental: true }); + + |