Bug 303634
| Summary: | GC sweeping should not be done in the End phase. | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Mark Lam <mark.lam> |
| Component: | JavaScriptCore | Assignee: | Mark Lam <mark.lam> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Mark Lam
That's because the end phase may be run on the GC thread instead of the mutator thread. Sweeping needs to be done on the mutator thread because AtomStringImpl destruction needs to unregistered from the mutator's thread local AtomStringTable. This can only be done on the mutator thread.
303051@main introduced eager synchronous sweeping in the GC End phase if there's a critical memory condition. We'll fix this by changing this to simply flag the need to sweep in the End phase, and let Heap::finalize() do the sweeping in the mutator thread instead.
rdar://165681233
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Mark Lam
Pull request: https://github.com/WebKit/Webkit/pull/54929
EWS
Committed 304020@main (b5808ff792b0): <https://commits.webkit.org/304020@main>
Reviewed commits have been landed. Closing PR #54929 and removing active labels.