Closed
Bug 705128
Opened 14 years ago
Closed 13 years ago
investigate caching C++ -> JS -> C++ cycle collector reachability
Categories
(Core :: XPCOM, defect)
Core
XPCOM
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.
Updated•14 years ago
|
Whiteboard: [Snappy]
| Reporter | ||
Comment 1•13 years ago
|
||
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
You need to log in
before you can comment on or make changes to this bug.
Description
•