Closed Bug 705128 Opened 8 years ago Closed 8 years ago

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

Categories

(Core :: XPCOM, defect)

defect
Not set

Tracking

()

RESOLVED WONTFIX

People

(Reporter: mccr8, Unassigned)

References

(Blocks 1 open bug)

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: 8 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.