diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:54:08 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:54:08 +0000 |
commit | 7443e3d6139ce4f0c822c23d1efb9c097419456d (patch) | |
tree | 8e2682b680f95eb05e7f15551464dd1a671b06e2 /js/src | |
parent | Releasing progress-linux version 125.0.2-1~progress7.99u1. (diff) | |
download | firefox-7443e3d6139ce4f0c822c23d1efb9c097419456d.tar.xz firefox-7443e3d6139ce4f0c822c23d1efb9c097419456d.zip |
Merging upstream version 125.0.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src')
-rw-r--r-- | js/src/frontend/Parser.cpp | 6 | ||||
-rw-r--r-- | js/src/jit-test/tests/arguments/bug1892699-1.js | 10 | ||||
-rw-r--r-- | js/src/jit-test/tests/arguments/bug1892699.js | 16 |
3 files changed, 32 insertions, 0 deletions
diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index 5cb47f2425..cd586ad2a7 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -10949,6 +10949,12 @@ GeneralParser<ParseHandler, Unit>::memberPropertyAccess( if (handler_.isArgumentsName(lhs) && handler_.isLengthName(name)) { MOZ_ASSERT(pc_->numberOfArgumentsNames > 0); pc_->numberOfArgumentsNames--; + // Currently when resuming Generators don't get their argument length set + // in the interpreter frame (see InterpreterStack::resumeGeneratorCallFrame, + // and its call to initCallFrame). + if (pc_->isGeneratorOrAsync()) { + pc_->sc()->setIneligibleForArgumentsLength(); + } return handler_.newArgumentsLength(lhs, name); } diff --git a/js/src/jit-test/tests/arguments/bug1892699-1.js b/js/src/jit-test/tests/arguments/bug1892699-1.js new file mode 100644 index 0000000000..9804f26a13 --- /dev/null +++ b/js/src/jit-test/tests/arguments/bug1892699-1.js @@ -0,0 +1,10 @@ +function* a(x, y, z) { + if (arguments.length !== 3) { + throw "Wrong output"; + } + yield x; + yield y; + yield z; +} +const x = a(3, 4, 5); +x.next(); diff --git a/js/src/jit-test/tests/arguments/bug1892699.js b/js/src/jit-test/tests/arguments/bug1892699.js new file mode 100644 index 0000000000..d01ab67b1e --- /dev/null +++ b/js/src/jit-test/tests/arguments/bug1892699.js @@ -0,0 +1,16 @@ +async function a(x, y, z) { + if (arguments.length !== 3) { + throw "Wrong output"; + } + await x; + if (arguments.length !== 3) { + throw "Wrong output"; + } + await y; + if (arguments.length !== 3) { + throw "Wrong output"; + } + await z; +} +const p = a(3, 4, 5); +p.then(() => { assertEq(true, true) }) |