summaryrefslogtreecommitdiffstats
path: root/js/src
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 01:54:08 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 01:54:08 +0000
commit7443e3d6139ce4f0c822c23d1efb9c097419456d (patch)
tree8e2682b680f95eb05e7f15551464dd1a671b06e2 /js/src
parentReleasing progress-linux version 125.0.2-1~progress7.99u1. (diff)
downloadfirefox-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.cpp6
-rw-r--r--js/src/jit-test/tests/arguments/bug1892699-1.js10
-rw-r--r--js/src/jit-test/tests/arguments/bug1892699.js16
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) })