summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/trace-viewer/src/tcmalloc/tcmalloc_snapshot_view.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/trace-viewer/src/tcmalloc/tcmalloc_snapshot_view.js')
-rw-r--r--chromium/third_party/trace-viewer/src/tcmalloc/tcmalloc_snapshot_view.js175
1 files changed, 0 insertions, 175 deletions
diff --git a/chromium/third_party/trace-viewer/src/tcmalloc/tcmalloc_snapshot_view.js b/chromium/third_party/trace-viewer/src/tcmalloc/tcmalloc_snapshot_view.js
deleted file mode 100644
index fc6db71e414..00000000000
--- a/chromium/third_party/trace-viewer/src/tcmalloc/tcmalloc_snapshot_view.js
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-'use strict';
-
-base.requireStylesheet('tcmalloc.tcmalloc_snapshot_view');
-
-base.require('tracing.analysis.object_snapshot_view');
-base.require('tracing.analysis.util');
-
-base.exportTo('tcmalloc', function() {
-
- var tsRound = tracing.analysis.tsRound;
-
- /*
- * Displays a heap memory snapshot in a human readable form.
- * @constructor
- */
- var TcmallocSnapshotView = ui.define(
- 'heap-snapshot-view',
- tracing.analysis.ObjectSnapshotView);
-
- TcmallocSnapshotView.prototype = {
- __proto__: tracing.analysis.ObjectSnapshotView.prototype,
-
- decorate: function() {
- this.classList.add('tcmalloc-snapshot-view');
- },
-
- updateContents: function() {
- var snapshot = this.objectSnapshot_;
- if (!snapshot || !snapshot.heap_) {
- this.textContent = 'No heap found.';
- return;
- }
- // Clear old snapshot view.
- this.textContent = '';
-
- // Note: "total" may actually be less than the largest allocation bin.
- // This might happen if one stack is doing a lot of allocation, then
- // passing off to another stack for deallocation. That stack will
- // have a high "current bytes" count and the other one might be
- // negative or zero. So "total" may be smaller than the largest trace.
- var subhead = document.createElement('div');
- subhead.textContent = 'Retaining ' +
- this.getByteString_(snapshot.total_.currentBytes) + ' in ' +
- snapshot.total_.currentAllocs +
- ' allocations. Showing > 0.1 MB.';
- subhead.className = 'subhead';
- this.appendChild(subhead);
-
- // Build a nested tree-view of allocations
- var myList = this.buildAllocList_(snapshot.heap_, false);
- this.appendChild(myList);
- },
-
- /**
- * Creates a nested list with clickable entries.
- * @param {Object} heapEntry The current trace heap entry.
- * @param {boolean} hide Whether this list is hidden by default.
- * @return {Element} A <ul> list element.
- */
- buildAllocList_: function(heapEntry, hide) {
- var myList = document.createElement('ul');
- myList.hidden = hide;
- var keys = Object.keys(heapEntry.children);
- keys.sort(function(a, b) {
- // Sort from large to small.
- return heapEntry.children[b].currentBytes -
- heapEntry.children[a].currentBytes;
- });
- for (var i = 0; i < keys.length; i++) {
- var traceName = keys[i];
- var trace = heapEntry.children[traceName];
- // Don't show small nodes - they make things harder to see.
- if (trace.currentBytes < 100 * 1024)
- continue;
- var childCount = Object.keys(trace.children).length;
- var isLeaf = childCount == 0;
- var myItem = this.buildItem_(
- traceName, isLeaf, trace.currentBytes, trace.currentAllocs);
- myList.appendChild(myItem);
- // Build a nested <ul> list of my children.
- if (childCount > 0)
- myItem.appendChild(this.buildAllocList_(trace, true));
- }
- return myList;
- },
-
- /*
- * Returns a <li> for an allocation traceName of size bytes.
- */
- buildItem_: function(traceName, isLeaf, bytes, allocs) {
- var myItem = document.createElement('li');
- myItem.className = 'trace-item';
- myItem.id = traceName;
-
- var byteDiv = document.createElement('div');
- byteDiv.textContent = this.getByteString_(bytes);
- byteDiv.className = 'trace-bytes';
- myItem.appendChild(byteDiv);
-
- if (traceName.length == 0) {
- // The empty trace name indicates that the allocations occurred at
- // this trace level, not in a sub-trace. This looks weird as the
- // empty string, so replace it with something non-empty and don't
- // give that line an expander.
- traceName = '(here)';
- } else if (traceName.indexOf('..') == 0) {
- // Tasks in RunTask have special handling. They show the path of the
- // filename. Convert '../../foo.cc' into 'RunTask from foo.cc'.
- var lastSlash = traceName.lastIndexOf('/');
- if (lastSlash != -1)
- traceName = 'Task from ' + traceName.substr(lastSlash + 1);
- }
- var traceDiv = document.createElement('div');
- traceDiv.textContent = traceName;
- traceDiv.className = 'trace-name';
- myItem.appendChild(traceDiv);
-
- // Don't allow leaf nodes to be expanded.
- if (isLeaf)
- return myItem;
-
- // Expand the element when it is clicked.
- var self = this;
- myItem.addEventListener('click', function(event) {
- // Allow click on the +/- image (li) or child divs.
- if (this == event.target || this == event.target.parentElement) {
- this.classList.toggle('expanded');
- var child = this.querySelector('ul');
- child.hidden = !child.hidden;
- // Highlight this stack trace in the timeline view.
- self.onItemClicked_(this);
- }
- });
- myItem.classList.add('collapsed');
- return myItem;
- },
-
- onItemClicked_: function(traceItem) {
- // Compute the full stack trace the user just clicked.
- var traces = [];
- while (traceItem.classList.contains('trace-item')) {
- var traceNameDiv = traceItem.firstElementChild.nextElementSibling;
- traces.unshift(traceNameDiv.textContent);
- var traceNameUl = traceItem.parentElement;
- traceItem = traceNameUl.parentElement;
- }
- // Tell the instance that this stack trace is selected.
- var instance = this.objectSnapshot_.objectInstance;
- instance.selectedTraces = traces;
- // Invalid the viewport to cause a redraw.
- var trackView = document.querySelector('.timeline-track-view');
- trackView.viewport_.dispatchChangeEvent();
- },
-
- /*
- * Returns a human readable string for a size in bytes.
- */
- getByteString_: function(bytes) {
- var mb = bytes / 1024 / 1024;
- return mb.toFixed(1) + ' MB';
- }
- };
-
- tracing.analysis.ObjectSnapshotView.register(
- 'memory::Heap', TcmallocSnapshotView);
-
- return {
- TcmallocSnapshotView: TcmallocSnapshotView
- };
-
-});