Commit 3a13c5ad authored by Ted Campbell's avatar Ted Campbell
Browse files

Bug 1811411 - Add profiler marker when discarding JitCode r=jandem

Similar to the Discard marker, it seems useful to have a profile marker for
discard events since they can toss a lot of Jit code.

Differential Revision: https://phabricator.services.mozilla.com/D167896
parent a4a54f76
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
#include "gc/Zone-inl.h"
#include "js/shadow/Zone.h"  // JS::shadow::Zone

#include "mozilla/Sprintf.h"
#include "mozilla/TimeStamp.h"

#include <type_traits>
@@ -489,6 +490,27 @@ void Zone::discardJitCode(JS::GCContext* gcx, const DiscardOptions& options) {
    jitZone()->optimizedStubSpace()->freeAllAfterMinorGC(this);
    jitZone()->purgeIonCacheIRStubInfo();
  }

  // Generate a profile marker
  if (gcx->runtime()->geckoProfiler().enabled()) {
    char discardingJitScript = options.discardJitScripts ? 'Y' : 'N';
    char discardingBaseline = options.discardBaselineCode ? 'Y' : 'N';
    char discardingIon = 'Y';

    char discardingRegExp = 'Y';
    char discardingNurserySites = options.resetNurseryAllocSites ? 'Y' : 'N';
    char discardingPretenuredSites =
        options.resetPretenuredAllocSites ? 'Y' : 'N';

    char buf[100];
    SprintfLiteral(buf,
                   "JitScript:%c Baseline:%c Ion:%c "
                   "RegExp:%c NurserySites:%c PretenuredSites:%c",
                   discardingJitScript, discardingBaseline, discardingIon,
                   discardingRegExp, discardingNurserySites,
                   discardingPretenuredSites);
    gcx->runtime()->geckoProfiler().markEvent("DiscardJit", buf);
  }
}

void JS::Zone::resetAllocSitesAndInvalidate(bool resetNurserySites,