Bug 1460385 - Don't trace propid in TraceCycleCollectorChildren. r=sfink, a=RyanVM DEVEDITION_61_0b4_BUILD1 DEVEDITION_61_0b4_RELEASE FIREFOX_61_0b4_BUILD1 FIREFOX_61_0b4_RELEASE
authorAndrew McCreight <continuation@gmail.com>
Wed, 09 May 2018 12:39:46 -0700
changeset 473259 1c40b4b4e81274767b91235ac8489da2adc04dd8
parent 473258 d2b96fb1faa49334a156fa8e0df5ebed633dca9f
child 473260 8670557466a26fa87ae2d94224e4709ca12366e3
push id1728
push userjlund@mozilla.com
push dateMon, 18 Jun 2018 21:12:27 +0000
treeherdermozilla-release@c296fde26f5f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssfink, RyanVM
bugs1460385
milestone61.0
Bug 1460385 - Don't trace propid in TraceCycleCollectorChildren. r=sfink, a=RyanVM 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
js/src/gc/Tracer.cpp
--- 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()) {