Closed Bug 1736021 Opened 3 months ago Closed 3 months ago

Continue to replace sweeping weak edges with tracing them


(Core :: JavaScript: GC, task, P3)




95 Branch
Tracking Status
firefox95 --- fixed


(Reporter: jonco, Assigned: jonco)




(5 files)

Following on from bug 1735486, replace even more uses of sweeping with tracing.

In this case we know that we only ever do this in sweeping, so we can optimize
by ignoring the tracer and checking the mark bits directly. This avoids
dispatching on the (known) tracer kind, and dispatching on the (irrelevant)
cell kind to call IsAboutToBeFinalized.

Previously this purged eval cache entries relatied to nursey strings at the
start of minor GC. I don't see a reason to remove these entries since the hash
isn't based on the string address. Instead we can update the string pointer for
any that were tenured, and continue to discard the rest.

Depends on D128602

Depends on D128603

This simplifies InnerViewTable::sweepEntry because it can use the provided
sweep() method on the view vector.

Depends on D128604

Now we can expose the map's sweep policy and use this to replace sweepEntry entirely.

Depends on D128605

Pushed by
Convert the unique ID table to use traceWeak during sweeping r=sfink
Update the eval cache after minor GC r=jandem
Sweep symbol registry with tracing r=sfink
Move UnsafeBarePtr to Barrier.h and use it in InnerViewTable::ViewVector r=sfink
Replace InnerViewTable::sweepEntry with use of the standard sweep policy r=sfink
You need to log in before you can comment on or make changes to this bug.