Bug 1460385 - Don't trace propid in TraceCycleCollectorChildren. r=sfink
The propid is a jsid, and a jsid can never be anything the CC cares
about, so there's no reason to trace it. In at least one profile of
Google Inbox, tracing shape propids is taking the majority of time in
the CC and causing very long pauses.
MozReview-Commit-ID: HcjnawBHLx1
--- a/js/src/gc/Tracer.cpp
+++ b/js/src/gc/Tracer.cpp
@@ -189,17 +189,17 @@ JS::TraceIncomingCCWs(JSTracer* trc, con
// simplicity and performance of FireFox's embedding of this engine.
void
gc::TraceCycleCollectorChildren(JS::CallbackTracer* trc, Shape* shape)
{
do {
MOZ_ASSERT(shape->base());
shape->base()->assertConsistency();
- TraceEdge(trc, &shape->propidRef(), "propid");
+ // Don't trace the propid because the CC doesn't care about jsid.
if (shape->hasGetterObject()) {
JSObject* tmp = shape->getterObject();
DoCallback(trc, &tmp, "getter");
MOZ_ASSERT(tmp == shape->getterObject());
}
if (shape->hasSetterObject()) {