summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/trace-viewer/src/tracing/trace_model/cpu.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/trace-viewer/src/tracing/trace_model/cpu.js')
-rw-r--r--chromium/third_party/trace-viewer/src/tracing/trace_model/cpu.js257
1 files changed, 0 insertions, 257 deletions
diff --git a/chromium/third_party/trace-viewer/src/tracing/trace_model/cpu.js b/chromium/third_party/trace-viewer/src/tracing/trace_model/cpu.js
deleted file mode 100644
index 17a9df55e38..00000000000
--- a/chromium/third_party/trace-viewer/src/tracing/trace_model/cpu.js
+++ /dev/null
@@ -1,257 +0,0 @@
-// Copyright (c) 2012 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';
-
-/**
- * @fileoverview Provides the Cpu class.
- */
-base.require('base.range');
-base.require('tracing.trace_model.slice');
-base.require('tracing.trace_model.counter');
-base.exportTo('tracing.trace_model', function() {
-
- var Counter = tracing.trace_model.Counter;
- var Slice = tracing.trace_model.Slice;
-
- /**
- * A CpuSlice represents an slice of time on a CPU.
- *
- * @constructor
- */
- function CpuSlice(cat, title, colorId, start, args, opt_duration) {
- Slice.apply(this, arguments);
- this.threadThatWasRunning = undefined;
- this.cpu = undefined;
- }
-
- CpuSlice.prototype = {
- __proto__: Slice.prototype,
-
- get analysisTypeName() {
- return 'tracing.analysis.CpuSlice';
- },
-
- toJSON: function() {
- var obj = new Object();
- var keys = Object.keys(this);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- if (typeof this[key] == 'function')
- continue;
- if (key == 'cpu' || key == 'threadThatWasRunning') {
- if (this[key])
- obj[key] = this[key].guid;
- continue;
- }
- obj[key] = this[key];
- }
- return obj;
- },
-
- getAssociatedTimeslice: function() {
- if (!this.threadThatWasRunning)
- return undefined;
- var timeSlices = this.threadThatWasRunning.timeSlices;
- for (var i = 0; i < timeSlices.length; i++) {
- var timeSlice = timeSlices[i];
- if (timeSlice.start !== this.start)
- continue;
- if (timeSlice.duration !== this.duration)
- continue;
- return timeSlice;
- }
- return undefined;
- }
- };
-
- /**
- * A ThreadTimeSlice is a slice of time on a specific thread where that thread
- * was running on a specific CPU, or in a specific sleep state.
- *
- * As a thread switches moves through its life, it sometimes goes to sleep and
- * can't run. Other times, its runnable but isn't actually assigned to a CPU.
- * Finally, sometimes it gets put on a CPU to actually execute. Each of these
- * states is represented by a ThreadTimeSlice:
- *
- * Sleeping or runnable: cpuOnWhichThreadWasRunning is undefined
- * Running: cpuOnWhichThreadWasRunning is set.
- *
- * @constructor
- */
- function ThreadTimeSlice(
- thread, cat, title, colorId, start, args, opt_duration) {
- Slice.call(this, cat, title, colorId, start, args, opt_duration);
- this.thread = thread;
- this.cpuOnWhichThreadWasRunning = undefined;
- }
-
- ThreadTimeSlice.prototype = {
- __proto__: Slice.prototype,
-
- get analysisTypeName() {
- return 'tracing.analysis.ThreadTimeSlice';
- },
-
- toJSON: function() {
- var obj = new Object();
- var keys = Object.keys(this);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- if (typeof this[key] == 'function')
- continue;
- if (key == 'thread' || key == 'cpuOnWhichThreadWasRunning') {
- if (this[key])
- obj[key] = this[key].guid;
- continue;
- }
- obj[key] = this[key];
- }
- return obj;
- },
-
- getAssociatedCpuSlice: function() {
- if (!this.cpuOnWhichThreadWasRunning)
- return undefined;
- var cpuSlices = this.cpuOnWhichThreadWasRunning.slices;
- for (var i = 0; i < cpuSlices.length; i++) {
- var cpuSlice = cpuSlices[i];
- if (cpuSlice.start !== this.start)
- continue;
- if (cpuSlice.duration !== this.duration)
- continue;
- return cpuSlice;
- }
- return undefined;
- },
-
- getCpuSliceThatTookCpu: function() {
- if (this.cpuOnWhichThreadWasRunning)
- return undefined;
- var curIndex = this.thread.indexOfTimeSlice(this);
- var cpuSliceWhenLastRunning;
- while (curIndex >= 0) {
- var curSlice = this.thread.timeSlices[curIndex];
- if (!curSlice.cpuOnWhichThreadWasRunning) {
- curIndex--;
- continue;
- }
- cpuSliceWhenLastRunning = curSlice.getAssociatedCpuSlice();
- break;
- }
- if (!cpuSliceWhenLastRunning)
- return undefined;
-
- var cpu = cpuSliceWhenLastRunning.cpu;
- var indexOfSliceOnCpuWhenLastRunning =
- cpu.indexOf(cpuSliceWhenLastRunning);
- var nextRunningSlice = cpu.slices[indexOfSliceOnCpuWhenLastRunning + 1];
- if (!nextRunningSlice)
- return undefined;
- if (Math.abs(nextRunningSlice.start - cpuSliceWhenLastRunning.end) <
- 0.00001)
- return nextRunningSlice;
- return undefined;
- }
- };
-
- /**
- * The Cpu represents a Cpu from the kernel's point of view.
- * @constructor
- */
- function Cpu(number) {
- this.cpuNumber = number;
- this.slices = [];
- this.counters = {};
- this.bounds = new base.Range();
- };
-
- Cpu.prototype = {
- /**
- * @return {TimlineCounter} The counter on this process named 'name',
- * creating it if it doesn't exist.
- */
- getOrCreateCounter: function(cat, name) {
- var id;
- if (cat.length)
- id = cat + '.' + name;
- else
- id = name;
- if (!this.counters[id])
- this.counters[id] = new Counter(this, id, cat, name);
- return this.counters[id];
- },
-
- /**
- * Shifts all the timestamps inside this CPU forward by the amount
- * specified.
- */
- shiftTimestampsForward: function(amount) {
- for (var sI = 0; sI < this.slices.length; sI++)
- this.slices[sI].start = (this.slices[sI].start + amount);
- for (var id in this.counters)
- this.counters[id].shiftTimestampsForward(amount);
- },
-
- /**
- * Updates the range based on the current slices attached to the cpu.
- */
- updateBounds: function() {
- this.bounds.reset();
- if (this.slices.length) {
- this.bounds.addValue(this.slices[0].start);
- this.bounds.addValue(this.slices[this.slices.length - 1].end);
- }
- for (var id in this.counters) {
- this.counters[id].updateBounds();
- this.bounds.addRange(this.counters[id].bounds);
- }
- },
-
- addCategoriesToDict: function(categoriesDict) {
- for (var i = 0; i < this.slices.length; i++)
- categoriesDict[this.slices[i].category] = true;
- for (var id in this.counters)
- categoriesDict[this.counters[id].category] = true;
- },
-
- get userFriendlyName() {
- return 'CPU ' + this.cpuNumber;
- },
-
- /*
- * Returns the index of the slice in the CPU's slices, or undefined.
- */
- indexOf: function(cpuSlice) {
- var i = base.findLowIndexInSortedArray(
- this.slices,
- function(slice) { return slice.start; },
- cpuSlice.start);
- if (this.slices[i] !== cpuSlice)
- return undefined;
- return i;
- },
-
- iterateAllEvents: function(callback) {
- this.slices.forEach(callback);
-
- for (var id in this.counters)
- this.counters[id].iterateAllEvents(callback);
- }
- };
-
- /**
- * Comparison between processes that orders by cpuNumber.
- */
- Cpu.compare = function(x, y) {
- return x.cpuNumber - y.cpuNumber;
- };
-
-
- return {
- Cpu: Cpu,
- CpuSlice: CpuSlice,
- ThreadTimeSlice: ThreadTimeSlice
- };
-});