NS_DECL_ISUPPORTS NS_IMETHOD CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) override { if (sConstantBufferUsage) { MOZ_COLLECT_REPORT( "mlgpu-constant-buffers", KIND_OTHER, UNITS_BYTES, sConstantBufferUsage, "Advanced Layers shader constant buffers."); } if (sVertexBufferUsage) { MOZ_COLLECT_REPORT( "mlgpu-vertex-buffers", KIND_OTHER, UNITS_BYTES, sVertexBufferUsage, "Advanced Layers shader vertex buffers."); } if (sRenderTargetUsage) { MOZ_COLLECT_REPORT( "mlgpu-render-targets", KIND_OTHER, UNITS_BYTES, sRenderTargetUsage, "Advanced Layers render target textures and depth buffers."); } return NS_OK; }
NS_IMETHODIMP CacheStorageService::CollectReports(nsIMemoryReporterCallback* aHandleReport, nsISupports* aData) { nsresult rv; rv = MOZ_COLLECT_REPORT( "explicit/network/cache2/io", KIND_HEAP, UNITS_BYTES, CacheFileIOManager::SizeOfIncludingThis(MallocSizeOf), "Memory used by the cache IO manager."); if (NS_WARN_IF(NS_FAILED(rv))) return rv; rv = MOZ_COLLECT_REPORT( "explicit/network/cache2/index", KIND_HEAP, UNITS_BYTES, CacheIndex::SizeOfIncludingThis(MallocSizeOf), "Memory used by the cache index."); if (NS_WARN_IF(NS_FAILED(rv))) return rv; MutexAutoLock lock(mLock); // Report the service instance, this doesn't report entries, done lower rv = MOZ_COLLECT_REPORT( "explicit/network/cache2/service", KIND_HEAP, UNITS_BYTES, SizeOfIncludingThis(MallocSizeOf), "Memory used by the cache storage service."); if (NS_WARN_IF(NS_FAILED(rv))) return rv; // Report all entries, each storage separately (by the context key) // // References are: // sGlobalEntryTables to N CacheEntryTable // CacheEntryTable to N CacheEntry // CacheEntry to 1 CacheFile // CacheFile to // N CacheFileChunk (keeping the actual data) // 1 CacheFileMetadata (keeping http headers etc.) // 1 CacheFileOutputStream // N CacheFileInputStream ReportStorageMemoryData data; data.mHandleReport = aHandleReport; data.mData = aData; sGlobalEntryTables->EnumerateRead(&ReportStorageMemory, &data); return NS_OK; }
NS_IMETHODIMP AudioContext::CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) { int64_t amount = SizeOfIncludingThis(MallocSizeOf); return MOZ_COLLECT_REPORT("explicit/webaudio/audiocontext", KIND_HEAP, UNITS_BYTES, amount, "Memory used by AudioContext objects (Web Audio)."); }
NS_IMETHODIMP SpdyZlibReporter::CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) { return MOZ_COLLECT_REPORT( "explicit/network/spdy-zlib-buffers", KIND_HEAP, UNITS_BYTES, sAmount, "Memory allocated for SPDY zlib send and receive buffers."); }
NS_IMETHODIMP BlobImplString::CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) { MOZ_COLLECT_REPORT( "explicit/dom/memory-file-data/string", KIND_HEAP, UNITS_BYTES, mData.SizeOfExcludingThisIfUnshared(MallocSizeOf), "Memory used to back a File/Blob based on a string."); return NS_OK; }
NS_IMETHODIMP StructuredCloneBlob::CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) { size_t size = MallocSizeOf(this); if (mHolder.isSome()) { size += mHolder->SizeOfExcludingThis(MallocSizeOf); } MOZ_COLLECT_REPORT("explicit/dom/structured-clone-holder", KIND_HEAP, UNITS_BYTES, size, "Memory used by StructuredCloneHolder DOM objects."); return NS_OK; }
NS_IMETHOD CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) override { int64_t amount = 0; RecordersArray& recorders = GetRecorders(); for (size_t i = 0; i < recorders.Length(); ++i) { amount += recorders[i]->SizeOfExcludingThis(MallocSizeOf); } MOZ_COLLECT_REPORT( "explicit/media/recorder", KIND_HEAP, UNITS_BYTES, amount, "Memory used by media recorder."); return NS_OK; }
NS_IMETHODIMP AudioBufferMemoryTracker::CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool) { size_t amount = 0; for (auto iter = mBuffers.Iter(); !iter.Done(); iter.Next()) { amount += iter.Get()->GetKey()->SizeOfIncludingThis(AudioBufferMemoryTrackerMallocSizeOf); } MOZ_COLLECT_REPORT( "explicit/webaudio/audiobuffer", KIND_HEAP, UNITS_BYTES, amount, "Memory used by AudioBuffer objects (Web Audio)."); return NS_OK; }
NS_IMETHODIMP BlobImplStream::CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) { nsCOMPtr<nsIStringInputStream> stringInputStream = do_QueryInterface(mInputStream); if (!stringInputStream) { return NS_OK; } MOZ_COLLECT_REPORT( "explicit/dom/memory-file-data/stream", KIND_HEAP, UNITS_BYTES, stringInputStream->SizeOfIncludingThis(MallocSizeOf), "Memory used to back a File/Blob based on an input stream."); return NS_OK; }
NS_IMETHODIMP AudioContext::CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) { const nsLiteralCString nodeDescription("Memory used by AudioNode DOM objects (Web Audio)."); for (auto iter = mAllNodes.ConstIter(); !iter.Done(); iter.Next()) { AudioNode* node = iter.Get()->GetKey(); int64_t amount = node->SizeOfIncludingThis(MallocSizeOf); nsPrintfCString domNodePath("explicit/webaudio/audio-node/%s/dom-nodes", node->NodeType()); aHandleReport->Callback(EmptyCString(), domNodePath, KIND_HEAP, UNITS_BYTES, amount, nodeDescription, aData); } int64_t amount = SizeOfIncludingThis(MallocSizeOf); MOZ_COLLECT_REPORT( "explicit/webaudio/audiocontext", KIND_HEAP, UNITS_BYTES, amount, "Memory used by AudioContext objects (Web Audio)."); return NS_OK; }