1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
/**
* @unrestricted
*/
SDK.HeapProfilerModel = class extends SDK.SDKModel {
/**
* @param {!SDK.Target} target
*/
constructor(target) {
super(SDK.HeapProfilerModel, target);
target.registerHeapProfilerDispatcher(new SDK.HeapProfilerDispatcher(this));
this._enabled = false;
this._heapProfilerAgent = target.heapProfilerAgent();
}
enable() {
if (this._enabled)
return;
this._enabled = true;
this._heapProfilerAgent.enable();
}
startSampling() {
var defaultSamplingIntervalInBytes = 16384;
this._heapProfilerAgent.startSampling(defaultSamplingIntervalInBytes);
}
/**
* @return {!Promise.<?Protocol.Profiler.Profile>}
*/
stopSampling() {
this._isRecording = false;
return this._heapProfilerAgent.stopSampling((error, profile) => error ? null : profile);
}
/**
* @param {!Array.<number>} samples
*/
heapStatsUpdate(samples) {
this.dispatchEventToListeners(SDK.HeapProfilerModel.Events.HeapStatsUpdate, samples);
}
/**
* @param {number} lastSeenObjectId
* @param {number} timestamp
*/
lastSeenObjectId(lastSeenObjectId, timestamp) {
this.dispatchEventToListeners(
SDK.HeapProfilerModel.Events.LastSeenObjectId, {lastSeenObjectId: lastSeenObjectId, timestamp: timestamp});
}
/**
* @param {string} chunk
*/
addHeapSnapshotChunk(chunk) {
this.dispatchEventToListeners(SDK.HeapProfilerModel.Events.AddHeapSnapshotChunk, chunk);
}
/**
* @param {number} done
* @param {number} total
* @param {boolean=} finished
*/
reportHeapSnapshotProgress(done, total, finished) {
this.dispatchEventToListeners(
SDK.HeapProfilerModel.Events.ReportHeapSnapshotProgress, {done: done, total: total, finished: finished});
}
resetProfiles() {
this.dispatchEventToListeners(SDK.HeapProfilerModel.Events.ResetProfiles);
}
};
/** @enum {symbol} */
SDK.HeapProfilerModel.Events = {
HeapStatsUpdate: Symbol('HeapStatsUpdate'),
LastSeenObjectId: Symbol('LastSeenObjectId'),
AddHeapSnapshotChunk: Symbol('AddHeapSnapshotChunk'),
ReportHeapSnapshotProgress: Symbol('ReportHeapSnapshotProgress'),
ResetProfiles: Symbol('ResetProfiles')
};
/**
* @implements {Protocol.HeapProfilerDispatcher}
* @unrestricted
*/
SDK.HeapProfilerDispatcher = class {
constructor(model) {
this._heapProfilerModel = model;
}
/**
* @override
* @param {!Array.<number>} samples
*/
heapStatsUpdate(samples) {
this._heapProfilerModel.heapStatsUpdate(samples);
}
/**
* @override
* @param {number} lastSeenObjectId
* @param {number} timestamp
*/
lastSeenObjectId(lastSeenObjectId, timestamp) {
this._heapProfilerModel.lastSeenObjectId(lastSeenObjectId, timestamp);
}
/**
* @override
* @param {string} chunk
*/
addHeapSnapshotChunk(chunk) {
this._heapProfilerModel.addHeapSnapshotChunk(chunk);
}
/**
* @override
* @param {number} done
* @param {number} total
* @param {boolean=} finished
*/
reportHeapSnapshotProgress(done, total, finished) {
this._heapProfilerModel.reportHeapSnapshotProgress(done, total, finished);
}
/**
* @override
*/
resetProfiles() {
this._heapProfilerModel.resetProfiles();
}
};
|