Bug 1331760 - convert dom/base from nsTextFormatter to AppendPrintf; r?froydnj draft
authorTom Tromey <tom@tromey.com>
Tue, 12 Sep 2017 15:34:53 -0600
changeset 696381 f8241fe4b165fbe6630ae68dc7fdccd51a180944
parent 696380 6298abd4d5b2e9aad68e21a629b9439ee1f8af2d
child 696382 77b75782e874de87498d946eb826528d858fea70
push id88695
push userbmo:ttromey@mozilla.com
push dateFri, 10 Nov 2017 15:13:25 +0000
reviewersfroydnj
bugs1331760
milestone58.0a1
Bug 1331760 - convert dom/base from nsTextFormatter to AppendPrintf; r?froydnj MozReview-Commit-ID: 2Ja50f40YxC
dom/base/nsJSEnvironment.cpp
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -31,17 +31,16 @@
 #include "nsITimer.h"
 #include "nsAtom.h"
 #include "nsContentUtils.h"
 #include "mozilla/EventDispatcher.h"
 #include "nsIContent.h"
 #include "nsCycleCollector.h"
 #include "nsXPCOMCIDInternal.h"
 #include "nsIXULRuntime.h"
-#include "nsTextFormatter.h"
 #ifdef XP_WIN
 #include <process.h>
 #define getpid _getpid
 #else
 #include <unistd.h> // for getpid()
 #endif
 #include "xpcpublic.h"
 
@@ -1701,95 +1700,99 @@ nsJSContext::EndCycleCollectionCallback(
       mergeMsg.AssignLiteral(" merged");
     }
 
     nsCString gcMsg;
     if (aResults.mForcedGC) {
       gcMsg.AssignLiteral(", forced a GC");
     }
 
-    const char16_t *kFmt =
-      u"CC(T+%.1f)[%s-%i] max pause: %lums, total time: %lums, slices: %lu, suspected: %lu, visited: %lu RCed and %lu%s GCed, collected: %lu RCed and %lu GCed (%lu|%lu|%lu waiting for GC)%s\n"
-      u"ForgetSkippable %lu times before CC, min: %lu ms, max: %lu ms, avg: %lu ms, total: %lu ms, max sync: %lu ms, removed: %lu";
+#define FORMAT                                                          \
+      "CC(T+%.1f)[%s-%i] max pause: %ums, total time: %ums, slices: %u, suspected: %u, visited: %u RCed and %u%s GCed, collected: %u RCed and %u GCed (%u|%u|%u waiting for GC)%s\n" \
+      "ForgetSkippable %u times before CC, min: %lu ms, max: %lu ms, avg: %lu ms, total: %lu ms, max sync: %u ms, removed: %u"
     nsString msg;
-    nsTextFormatter::ssprintf(msg, kFmt, double(delta) / PR_USEC_PER_SEC,
-                              ProcessNameForCollectorLog(), getpid(),
-                              gCCStats.mMaxSliceTime, gCCStats.mTotalSliceTime,
-                              aResults.mNumSlices, gCCStats.mSuspected,
-                              aResults.mVisitedRefCounted, aResults.mVisitedGCed, mergeMsg.get(),
-                              aResults.mFreedRefCounted, aResults.mFreedGCed,
-                              sCCollectedWaitingForGC, sCCollectedZonesWaitingForGC, sLikelyShortLivingObjectsNeedingGC,
-                              gcMsg.get(),
-                              sForgetSkippableBeforeCC,
-                              minForgetSkippableTime / PR_USEC_PER_MSEC,
-                              sMaxForgetSkippableTime / PR_USEC_PER_MSEC,
-                              (sTotalForgetSkippableTime / cleanups) /
-                              PR_USEC_PER_MSEC,
-                              sTotalForgetSkippableTime / PR_USEC_PER_MSEC,
-                              gCCStats.mMaxSkippableDuration, sRemovedPurples);
+    msg.AppendPrintf(FORMAT, double(delta) / PR_USEC_PER_SEC,
+                     ProcessNameForCollectorLog(), getpid(),
+                     gCCStats.mMaxSliceTime, gCCStats.mTotalSliceTime,
+                     aResults.mNumSlices, gCCStats.mSuspected,
+                     aResults.mVisitedRefCounted, aResults.mVisitedGCed, mergeMsg.get(),
+                     aResults.mFreedRefCounted, aResults.mFreedGCed,
+                     sCCollectedWaitingForGC, sCCollectedZonesWaitingForGC, sLikelyShortLivingObjectsNeedingGC,
+                     gcMsg.get(),
+                     sForgetSkippableBeforeCC,
+                     minForgetSkippableTime / PR_USEC_PER_MSEC,
+                     sMaxForgetSkippableTime / PR_USEC_PER_MSEC,
+                     (sTotalForgetSkippableTime / cleanups) /
+                     PR_USEC_PER_MSEC,
+                     sTotalForgetSkippableTime / PR_USEC_PER_MSEC,
+                     gCCStats.mMaxSkippableDuration, sRemovedPurples);
+#undef FORMAT
     if (sPostGCEventsToConsole) {
       nsCOMPtr<nsIConsoleService> cs =
         do_GetService(NS_CONSOLESERVICE_CONTRACTID);
       if (cs) {
         cs->LogStringMessage(msg.get());
       }
     }
     if (gCCStats.mFile) {
       fprintf(gCCStats.mFile, "%s\n", NS_ConvertUTF16toUTF8(msg).get());
     }
   }
 
   if (sPostGCEventsToObserver) {
-    const char16_t* kJSONFmt =
-       u"{ \"timestamp\": %llu, "
-         u"\"duration\": %lu, "
-         u"\"max_slice_pause\": %lu, "
-         u"\"total_slice_pause\": %lu, "
-         u"\"max_finish_gc_duration\": %lu, "
-         u"\"max_sync_skippable_duration\": %lu, "
-         u"\"suspected\": %lu, "
-         u"\"visited\": { "
-             u"\"RCed\": %lu, "
-             u"\"GCed\": %lu }, "
-         u"\"collected\": { "
-             u"\"RCed\": %lu, "
-             u"\"GCed\": %lu }, "
-         u"\"waiting_for_gc\": %lu, "
-         u"\"zones_waiting_for_gc\": %lu, "
-         u"\"short_living_objects_waiting_for_gc\": %lu, "
-         u"\"forced_gc\": %d, "
-         u"\"forget_skippable\": { "
-             u"\"times_before_cc\": %lu, "
-             u"\"min\": %lu, "
-             u"\"max\": %lu, "
-             u"\"avg\": %lu, "
-             u"\"total\": %lu, "
-             u"\"removed\": %lu } "
-       u"}";
+#define JSON_FMT                                               \
+       "{ \"timestamp\": %" PRId64 ", "                        \
+         "\"duration\": %u, "                                  \
+         "\"max_slice_pause\": %u, "                           \
+         "\"total_slice_pause\": %u, "                         \
+         "\"max_finish_gc_duration\": %u, "                    \
+         "\"max_sync_skippable_duration\": %u, "               \
+         "\"suspected\": %u, "                                 \
+         "\"visited\": { "                                     \
+             "\"RCed\": %u, "                                  \
+             "\"GCed\": %u }, "                                \
+         "\"collected\": { "                                   \
+             "\"RCed\": %u, "                                  \
+             "\"GCed\": %u }, "                                \
+         "\"waiting_for_gc\": %u, "                            \
+         "\"zones_waiting_for_gc\": %u, "                      \
+         "\"short_living_objects_waiting_for_gc\": %u, "       \
+         "\"forced_gc\": %d, "                                 \
+         "\"forget_skippable\": { "                            \
+             "\"times_before_cc\": %u, "                       \
+             "\"min\": %lu, "                                  \
+             "\"max\": %lu, "                                  \
+             "\"avg\": %lu, "                                  \
+             "\"total\": %lu, "                                \
+             "\"removed\": %u } "                              \
+       "}"
 
     nsString json;
-    nsTextFormatter::ssprintf(json, kJSONFmt, PR_Now(), ccNowDuration,
-                              gCCStats.mMaxSliceTime,
-                              gCCStats.mTotalSliceTime,
-                              gCCStats.mMaxGCDuration,
-                              gCCStats.mMaxSkippableDuration,
-                              gCCStats.mSuspected,
-                              aResults.mVisitedRefCounted, aResults.mVisitedGCed,
-                              aResults.mFreedRefCounted, aResults.mFreedGCed,
-                              sCCollectedWaitingForGC,
-                              sCCollectedZonesWaitingForGC,
-                              sLikelyShortLivingObjectsNeedingGC,
-                              aResults.mForcedGC,
-                              sForgetSkippableBeforeCC,
-                              minForgetSkippableTime / PR_USEC_PER_MSEC,
-                              sMaxForgetSkippableTime / PR_USEC_PER_MSEC,
-                              (sTotalForgetSkippableTime / cleanups) /
-                              PR_USEC_PER_MSEC,
-                              sTotalForgetSkippableTime / PR_USEC_PER_MSEC,
-                              sRemovedPurples);
+    json.AppendPrintf(JSON_FMT, PR_Now(), ccNowDuration,
+                      gCCStats.mMaxSliceTime,
+                      gCCStats.mTotalSliceTime,
+                      gCCStats.mMaxGCDuration,
+                      gCCStats.mMaxSkippableDuration,
+                      gCCStats.mSuspected,
+                      aResults.mVisitedRefCounted, aResults.mVisitedGCed,
+                      aResults.mFreedRefCounted, aResults.mFreedGCed,
+                      sCCollectedWaitingForGC,
+                      sCCollectedZonesWaitingForGC,
+                      sLikelyShortLivingObjectsNeedingGC,
+                      aResults.mForcedGC,
+                      sForgetSkippableBeforeCC,
+                      minForgetSkippableTime / PR_USEC_PER_MSEC,
+                      sMaxForgetSkippableTime / PR_USEC_PER_MSEC,
+                      (sTotalForgetSkippableTime / cleanups) /
+                      PR_USEC_PER_MSEC,
+                      sTotalForgetSkippableTime / PR_USEC_PER_MSEC,
+                      sRemovedPurples);
+
+#undef JSON_FMT
+
     nsCOMPtr<nsIObserverService> observerService = mozilla::services::GetObserverService();
     if (observerService) {
       observerService->NotifyObservers(nullptr, "cycle-collection-statistics", json.get());
     }
   }
 
   // Update global state to indicate we have just run a cycle collection.
   sMinForgetSkippableTime = UINT32_MAX;
@@ -2309,19 +2312,19 @@ DOMGCSliceCallback(JSContext* aCx, JS::G
 
     case JS::GC_CYCLE_END: {
       PRTime delta = GetCollectionTimeDelta();
 
       if (sPostGCEventsToConsole) {
         nsString gcstats;
         gcstats.Adopt(aDesc.formatSummaryMessage(aCx));
         nsAutoString prefix;
-        nsTextFormatter::ssprintf(prefix, u"GC(T+%.1f)[%s-%i] ",
-                                  double(delta) / PR_USEC_PER_SEC,
-                                  ProcessNameForCollectorLog(), getpid());
+        prefix.AppendPrintf("GC(T+%.1f)[%s-%i] ",
+                            double(delta) / PR_USEC_PER_SEC,
+                            ProcessNameForCollectorLog(), getpid());
         nsString msg = prefix + gcstats;
         nsCOMPtr<nsIConsoleService> cs = do_GetService(NS_CONSOLESERVICE_CONTRACTID);
         if (cs) {
           cs->LogStringMessage(msg.get());
         }
       }
 
       if (!sShuttingDown) {
@@ -2396,18 +2399,17 @@ DOMGCSliceCallback(JSContext* aCx, JS::G
       if (ShouldTriggerCC(nsCycleCollector_suspectedCount())) {
         nsCycleCollector_dispatchDeferredDeletion();
       }
 
       if (sPostGCEventsToConsole) {
         nsString gcstats;
         gcstats.Adopt(aDesc.formatSliceMessage(aCx));
         nsAutoString prefix;
-        nsTextFormatter::ssprintf(prefix, u"[%s-%i] ",
-                                  ProcessNameForCollectorLog(), getpid());
+        prefix.AppendPrintf("[%s-%i] ", ProcessNameForCollectorLog(), getpid());
         nsString msg = prefix + gcstats;
         nsCOMPtr<nsIConsoleService> cs = do_GetService(NS_CONSOLESERVICE_CONTRACTID);
         if (cs) {
           cs->LogStringMessage(msg.get());
         }
       }
 
       break;