Closed Bug 1266457 Opened 4 years ago Closed 3 years ago

Update pointers in GC things in two phases when compacting

Categories

(Core :: JavaScript: GC, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla49
Tracking Status
firefox49 --- fixed

People

(Reporter: jonco, Assigned: jonco)

References

(Blocks 1 open bug)

Details

Attachments

(2 files)

At the moment we update all GC things in the same phase which is problematic because there are dependencies between different thing kinds.  We can simplify matters by updating in two separate phases, the second being for objects and the first for everything else.  (The objects phase will also continue to update type descriptors first, so that's really another mini-phase).
Replace repeated calls to ArenasToUpdate::updateKind with static sets of thing kinds to update in each phase, possibly filtered for foreground/background update.
Attachment #8743941 - Flags: review?(terrence)
The type descriptor for a typed object actually lives on the object group.  Now that object groups are updated before any objects we can remove MaybeForwarded when accessing the type descriptor in the typed object trace hook.
Attachment #8743943 - Flags: review?(terrence)
Attachment #8743941 - Flags: review?(terrence) → review+
Attachment #8743943 - Flags: review?(terrence) → review+
https://hg.mozilla.org/mozilla-central/rev/a0f19ca7386d
https://hg.mozilla.org/mozilla-central/rev/0e01363bf4fd
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla49
You need to log in before you can comment on or make changes to this bug.