Closed Bug 705128 Opened 8 years ago Closed 8 years ago
investigate caching C++ -> JS -> C++ cycle collector reachability
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.
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: 8 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.