mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-30 08:12:05 +00:00
3e70d88d7a
There are two issues here. The first is that there unexpected marking work at the start of sweeping after entering from the mark phase without yielding. We previously called assertNoMarkingWork() after markUntilBudgetExhausted() in the marking phase so something since then must have added it. As far as I can tell this must be the conditional call to collectNurseryFromMajorGC(), where a post barrier for a pointer cleared during finalization (e.g. for Maps in mapObject::sweepAfterMinorGC) ends up marking something. I'm not sure such barriers are necessary, but for now the safest thing to do is to move this nursery collection to the start of the slice so that it happens before we drain the mark stack. The second issue is that we check the budget and conditionally yield if we enter from the marking state. The comment above this code states that this is not safe since we have not yet started sweeping a sweep group. This check was added in bug 1865383 but was not the main part of the fix. I think we should remove this. I wasn't able to come up with a test case to reproduce this. Differential Revision: https://phabricator.services.mozilla.com/D217551 |
||
---|---|---|
.. | ||
examples | ||
loader | ||
public | ||
src | ||
xpconnect | ||
app.mozbuild | ||
ffi.configure | ||
moz.build | ||
moz.configure | ||
sub.configure |