No bug. Switch to printOnce for debuggability, r=me
authorSteve Fink <sfink@mozilla.com>
Thu, 21 Sep 2017 18:32:27 -0700
changeset 500001 57b0208b6a7809a487584f128eced32eb99c16d4
parent 500000 bc4d8d0bf57555a39cf825c91c82fea0843072bc
child 500002 d67c4217db0bb9d96cb36f8eca1ca5cc755837ab
push id1864
push userffxbld-merge
push dateMon, 03 Dec 2018 15:51:40 +0000
treeherdermozilla-release@f040763d99ad [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersme
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
No bug. Switch to printOnce for debuggability, r=me
js/src/devtools/rootAnalysis/computeCallgraph.js
--- a/js/src/devtools/rootAnalysis/computeCallgraph.js
+++ b/js/src/devtools/rootAnalysis/computeCallgraph.js
@@ -170,17 +170,17 @@ function process(functionName, functionB
     // will show up as called but only "foo *INTERNAL* " will be emitted in the
     // case where the constructors are identical.
     //
     // This is slightly conservative in the case where they are *not*
     // identical, but that should be rare enough that we don't care.
     var markerPos = functionName.indexOf(internalMarker);
     if (markerPos > 0) {
         var inChargeXTor = functionName.replace(internalMarker, "");
-        print("D " + memo(inChargeXTor) + " " + memo(functionName));
+        printOnce("D " + memo(inChargeXTor) + " " + memo(functionName));
     }
 
     // Further note: from https://itanium-cxx-abi.github.io/cxx-abi/abi.html the
     // different kinds of constructors/destructors are:
     // C1	# complete object constructor
     // C2	# base object constructor
     // C3	# complete object allocating constructor
     // D0	# deleting destructor
@@ -229,17 +229,17 @@ function process(functionName, functionB
             ['C4I', 'C2I'],
             ['C4I', 'C3I']])
         {
             if (mangled.indexOf(synthetic) == -1)
                 continue;
 
             let variant_mangled = mangled.replace(synthetic, variant);
             let variant_full = variant_mangled + "$" + unmangled;
-            print("D " + memo(variant_full) + " " + memo(functionName));
+            printOnce("D " + memo(variant_full) + " " + memo(functionName));
         }
     }
 
     // For destructors:
     //
     // I've never seen D4Ev() + D4Ev(int32), only one or the other. So
     // for a D4Ev of any sort, create:
     //
@@ -252,19 +252,19 @@ function process(functionName, functionB
     // Note that this doesn't actually make sense -- D0 and D1 should be
     // in-charge, but gcc doesn't seem to give them the in-charge parameter?!
     //
     if (functionName.indexOf("D4Ev") != -1 && functionName.indexOf("::~") != -1) {
         const not_in_charge_dtor = functionName.replace("(int32)", "()");
         const D0 = not_in_charge_dtor.replace("D4Ev", "D0Ev");
         const D1 = not_in_charge_dtor.replace("D4Ev", "D1Ev");
         const D2 = not_in_charge_dtor.replace("D4Ev", "D2Ev");
-        print("D " + memo(D0) + " " + memo(D1));
-        print("D " + memo(D1) + " " + memo(D2));
-        print("D " + memo(D2) + " " + memo(functionName));
+        printOnce("D " + memo(D0) + " " + memo(D1));
+        printOnce("D " + memo(D1) + " " + memo(D2));
+        printOnce("D " + memo(D2) + " " + memo(functionName));
     }
 }
 
 for (var nameIndex = minStream; nameIndex <= maxStream; nameIndex++) {
     var name = xdb.read_key(nameIndex);
     var data = xdb.read_entry(name);
     process(name.readString(), JSON.parse(data.readString()));
     xdb.free_string(name);