Open Bug 869187 Opened 12 years ago Updated 2 years ago

Make non-tracing NS_SUCCESS_INTERRUPTED_TRAVERSE classes skippable

Categories

(Core :: Cycle Collector, defect)

defect

Tracking

()

People

(Reporter: mccr8, Unassigned)

References

(Blocks 1 open bug)

Details

NS_SUCCESS_INTERRUPTED_TRAVERSE was useful before we had a general mechanism for skippability of CCed objects, but it is a bit funky (it doesn't work nicely with WANT_ALL_TRACES, and requires some extra branches here and there). We could convert all existing users over to be standard skippable classes, then remove it. It probably makes sense to file individual bugs for the conversions, at least for the ones like Node that may be nasty. I haven't thought about this too much. Not a huge deal, but it would be nice. I thought I'd filed something on this, but I guess not.
NS_SUCCESS_INTERRUPTED_TRAVERSE classes that hold onto JS can't be converted entirely over to be purely skippable, because we must trace their JS no matter what. However, about half of the classes that do interrupted traverse don't trace, and so could be converted over: nsNodeInfoManager nsXULPrototypeDocument nsXULTemplateBuilder (has some subclasses) nsEditor (has a subclass) nsFrameSelection I noted which classes have subclasses because I forget how that interacts with skippability. We'd want to make sure we don't lose the skippability in subclasses.
Summary: Eliminate usage of NS_SUCCESS_INTERRUPTED_TRAVERSE in cycle collector traversal → Make non-tracing NS_SUCCESS_INTERRUPTED_TRAVERSE classes skippable
Depends on: 1094531
Severity: normal → S3
Component: XPCOM → Cycle Collector
You need to log in before you can comment on or make changes to this bug.