Skip to content

Commit b935e31

Browse files
committed
Bug 1966657: Only run shell jobs if JS_ExecuteScript returns true; r=iain
Differential Revision: https://phabricator.services.mozilla.com/D250193 UltraBlame original commit: 0cf73230aa697fae71a8aa6c5a52eb79d956c99e
1 parent d6fa29d commit b935e31

File tree

3 files changed

+42
-11
lines changed

3 files changed

+42
-11
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
3+
let sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT);
4+
setSharedObject(sab);
5+
6+
evalInWorker(`
7+
const i32 = new Int32Array(getSharedObject());
8+
let p = new Promise((resolve) => resolve(3));
9+
p.then(() => {
10+
Atomics.store(i32, 0, 1);
11+
});
12+
throw "error";
13+
`);
14+
15+
16+
let i32 = new Int32Array(sab);
17+
while (Atomics.load(i32, 0) === 0) {}
18+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
evalInWorker(`
3+
a = {
4+
then() {
5+
b
6+
}
7+
}
8+
Promise.any([a])
9+
c
10+
`)
11+

js/src/shell/js.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4656,19 +4656,21 @@ static void WorkerMain(UniquePtr<WorkerInput> input) {
46564656
.setIsRunOnce(true)
46574657
.setEagerDelazificationStrategy(defaultDelazificationMode);
46584658

4659-
AutoReportException are(cx);
4660-
JS::SourceText<char16_t> srcBuf;
4661-
if (!srcBuf.init(cx, input->chars.get(), input->length,
4662-
JS::SourceOwnership::Borrowed)) {
4663-
break;
4664-
}
4659+
{
4660+
AutoReportException are(cx);
4661+
JS::SourceText<char16_t> srcBuf;
4662+
if (!srcBuf.init(cx, input->chars.get(), input->length,
4663+
JS::SourceOwnership::Borrowed)) {
4664+
break;
4665+
}
46654666

4666-
RootedScript script(cx, JS::Compile(cx, options, srcBuf));
4667-
if (!script) {
4668-
break;
4667+
RootedScript script(cx, JS::Compile(cx, options, srcBuf));
4668+
if (!script) {
4669+
break;
4670+
}
4671+
RootedValue result(cx);
4672+
JS_ExecuteScript(cx, script, &result);
46694673
}
4670-
RootedValue result(cx);
4671-
JS_ExecuteScript(cx, script, &result);
46724674

46734675
RunShellJobs(cx);
46744676
} while (0);

0 commit comments

Comments
 (0)