Closed Bug 705128 Opened 14 years ago Closed 13 years ago

investigate caching C++ -> JS -> C++ cycle collector reachability

Categories

(Core :: XPCOM, defect)

defect
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: mccr8, Unassigned)

References

Details

(Whiteboard: [Snappy])

If an object is gray, that means that it hasn't been modified since the last GC. Thus, if the CC runs twice in a row without a GC in between, in theory we could cache the results of the CC's traversal of the GC heap. These results take the form of a mapping from C++ objects that hold JS objects, to sets of C++ objects that are pointed to by JS objects. When you reach one of those C++ objects, you just look up in the cache what other C++ objects it points to. The drawback here is that we'd have to compute and store this extra information. Having multiple CCs in a row isn't that rare, but it isn't that common either. Looking at my console, it looks like it happens maybe one out of every 5 or 6 times. Certain kinds of workloads could cause more CCs without GCs, I suppose.
Whiteboard: [Snappy]
I'm not really sure how to do this, and using a more standard GC marking path for the CC is probably good enough, so I'm going to close this for now.
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → WONTFIX
No longer blocks: 698919
Blocks: 698919
You need to log in before you can comment on or make changes to this bug.