Closed Bug 1589037 Opened 5 years ago Closed 3 years ago

Replace sweep methods with traceWeakEdges in DebugEnvironments

Categories

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

enhancement

Tracking

()

RESOLVED FIXED
95 Branch
Tracking Status
firefox95 --- fixed

People

(Reporter: allstars.chh, Assigned: jonco)

References

Details

Attachments

(1 file)

In bug 1573809 I found that DebugEnvironments::sweep() has some issues so it can't be replaced with tracing.

so after calling IATBF, it will also reuse the key to call liveEnvs.remove
https://searchfox.org/mozilla-central/rev/171109434c6f2fe086af3b2322839b346a112a99/js/src/vm/EnvironmentObject.cpp#2529

However in TraceWeak case with sweeping, the pointer has been set to nullptr already.

So we pre-read the key before calling IATBF, however it causes problems in compacting now, because in compacting state the pointer is actually forwarded already.

We need to have a better design to fix this.

Summary: replace DebugEnvironments::sweep() with tracing → Replace sweep methods with traceWeakEdges in DebugEnvironments
Assignee: nobody → jcoppeard
Status: NEW → ASSIGNED
Pushed by jcoppeard@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/cb5027add2d1
Use TraceWeakEdge for DebugEnvironment r=sfink
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 95 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: