From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- js/src/jit-test/tests/xdr/load-nonsyntactic.js | 55 ++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 js/src/jit-test/tests/xdr/load-nonsyntactic.js (limited to 'js/src/jit-test/tests/xdr/load-nonsyntactic.js') diff --git a/js/src/jit-test/tests/xdr/load-nonsyntactic.js b/js/src/jit-test/tests/xdr/load-nonsyntactic.js new file mode 100644 index 0000000000..a5a2e838ce --- /dev/null +++ b/js/src/jit-test/tests/xdr/load-nonsyntactic.js @@ -0,0 +1,55 @@ +var nonSyntacticEnvironment = { field: 10 }; + +var source = ` +function f() { + function g() { + function h() { + // Load out of non syntactic environment. + return field; + } + return h(); + } + return g(); +} + +f()` + +function check(before, after) { + var code = cacheEntry(source); + var res = evaluate(code, before); + assertEq(res, 10); + res = evaluate(code, after); + assertEq(res, 10); +} + + +check({ envChainObject: nonSyntacticEnvironment, saveIncrementalBytecode: true, }, + { envChainObject: nonSyntacticEnvironment, loadBytecode: true }) + + +try { + var global = newGlobal(); + global.field = 10; + check({ envChainObject: nonSyntacticEnvironment, saveIncrementalBytecode: true, }, + { global: global, loadBytecode: true }) + + // Should have thrown + assertEq(false, true) +} catch (e) { + assertEq(/Incompatible cache contents/.test(e.message), true); +} + +try { + check({ global: global, saveIncrementalBytecode: true }, + { envChainObject: nonSyntacticEnvironment, loadBytecode: true }) + + // Should have thrown + assertEq(false, true) +} catch (e) { + assertEq(/Incompatible cache contents/.test(e.message), true); +} + + +var nonSyntacticEnvironmentTwo = { field: 10 }; +check({ envChainObject: nonSyntacticEnvironment, saveIncrementalBytecode: true, }, + { envChainObject: nonSyntacticEnvironmentTwo, loadBytecode: true }) -- cgit v1.2.3