| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 976 */ | 976 */ |
| 977 buttonClicked: function() | 977 buttonClicked: function() |
| 978 { | 978 { |
| 979 return this._toggleRecording(); | 979 return this._toggleRecording(); |
| 980 }, | 980 }, |
| 981 | 981 |
| 982 _startRecordingProfile: function() | 982 _startRecordingProfile: function() |
| 983 { | 983 { |
| 984 if (this.profileBeingRecorded()) | 984 if (this.profileBeingRecorded()) |
| 985 return; | 985 return; |
| 986 this._addNewProfile(); |
| 987 HeapProfilerAgent.startTrackingHeapObjects(WebInspector.experimentsSetti
ngs.allocationProfiler.isEnabled()); |
| 988 }, |
| 989 |
| 990 _addNewProfile: function() |
| 991 { |
| 986 this._profileBeingRecorded = new WebInspector.HeapProfileHeader(this); | 992 this._profileBeingRecorded = new WebInspector.HeapProfileHeader(this); |
| 987 this._lastSeenIndex = -1; | 993 this._lastSeenIndex = -1; |
| 988 this._profileSamples = { | 994 this._profileSamples = { |
| 989 'sizes': [], | 995 'sizes': [], |
| 990 'ids': [], | 996 'ids': [], |
| 991 'timestamps': [], | 997 'timestamps': [], |
| 992 'max': [], | 998 'max': [], |
| 993 'totalTime': 30000 | 999 'totalTime': 30000 |
| 994 }; | 1000 }; |
| 995 this._profileBeingRecorded._profileSamples = this._profileSamples; | 1001 this._profileBeingRecorded._profileSamples = this._profileSamples; |
| 996 this._recording = true; | 1002 this._recording = true; |
| 997 this.addProfile(this._profileBeingRecorded); | 1003 this.addProfile(this._profileBeingRecorded); |
| 998 this._profileBeingRecorded.updateStatus(WebInspector.UIString("Recording
\u2026")); | 1004 this._profileBeingRecorded.updateStatus(WebInspector.UIString("Recording
\u2026")); |
| 999 HeapProfilerAgent.startTrackingHeapObjects(WebInspector.experimentsSetti
ngs.allocationProfiler.isEnabled()); | |
| 1000 this.dispatchEventToListeners(WebInspector.TrackingHeapSnapshotProfileTy
pe.TrackingStarted); | 1005 this.dispatchEventToListeners(WebInspector.TrackingHeapSnapshotProfileTy
pe.TrackingStarted); |
| 1001 }, | 1006 }, |
| 1002 | 1007 |
| 1003 _stopRecordingProfile: function() | 1008 _stopRecordingProfile: function() |
| 1004 { | 1009 { |
| 1005 this._profileBeingRecorded.updateStatus(WebInspector.UIString("Snapshott
ing\u2026")); | 1010 this._profileBeingRecorded.updateStatus(WebInspector.UIString("Snapshott
ing\u2026")); |
| 1006 /** | 1011 /** |
| 1007 * @param {?string} error | 1012 * @param {?string} error |
| 1008 * @this {WebInspector.HeapSnapshotProfileType} | 1013 * @this {WebInspector.HeapSnapshotProfileType} |
| 1009 */ | 1014 */ |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1037 return WebInspector.UIString("HEAP TIMELINES"); | 1042 return WebInspector.UIString("HEAP TIMELINES"); |
| 1038 }, | 1043 }, |
| 1039 | 1044 |
| 1040 get description() | 1045 get description() |
| 1041 { | 1046 { |
| 1042 return WebInspector.UIString("Record JavaScript object allocations over
time. Use this profile type to isolate memory leaks."); | 1047 return WebInspector.UIString("Record JavaScript object allocations over
time. Use this profile type to isolate memory leaks."); |
| 1043 }, | 1048 }, |
| 1044 | 1049 |
| 1045 _reset: function() | 1050 _reset: function() |
| 1046 { | 1051 { |
| 1052 var wasRecording = this._recording; |
| 1053 // Clear current profile to avoid stopping backend. |
| 1054 this._profileBeingRecorded = null; |
| 1047 WebInspector.HeapSnapshotProfileType.prototype._reset.call(this); | 1055 WebInspector.HeapSnapshotProfileType.prototype._reset.call(this); |
| 1048 if (this._recording) | |
| 1049 this._stopRecordingProfile(); | |
| 1050 this._profileSamples = null; | 1056 this._profileSamples = null; |
| 1051 this._lastSeenIndex = -1; | 1057 this._lastSeenIndex = -1; |
| 1058 if (wasRecording) |
| 1059 this._addNewProfile(); |
| 1052 }, | 1060 }, |
| 1053 | 1061 |
| 1054 /** | 1062 /** |
| 1055 * @override | 1063 * @override |
| 1056 */ | 1064 */ |
| 1057 profileBeingRecordedRemoved: function() | 1065 profileBeingRecordedRemoved: function() |
| 1058 { | 1066 { |
| 1059 this._stopRecordingProfile(); | 1067 this._stopRecordingProfile(); |
| 1060 this._profileSamples = null; | 1068 this._profileSamples = null; |
| 1061 }, | 1069 }, |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1129 | 1137 |
| 1130 _prepareToLoad: function() | 1138 _prepareToLoad: function() |
| 1131 { | 1139 { |
| 1132 console.assert(!this._receiver, "Already loading"); | 1140 console.assert(!this._receiver, "Already loading"); |
| 1133 this._setupWorker(); | 1141 this._setupWorker(); |
| 1134 this.updateStatus(WebInspector.UIString("Loading\u2026"), true); | 1142 this.updateStatus(WebInspector.UIString("Loading\u2026"), true); |
| 1135 }, | 1143 }, |
| 1136 | 1144 |
| 1137 _finishLoad: function() | 1145 _finishLoad: function() |
| 1138 { | 1146 { |
| 1139 this._receiver.close(function() {}); | 1147 if (!this._wasDisposed) |
| 1148 this._receiver.close(function() {}); |
| 1140 if (this._bufferedWriter) { | 1149 if (this._bufferedWriter) { |
| 1141 this._bufferedWriter.close(this._didWriteToTempFile.bind(this)); | 1150 this._bufferedWriter.close(this._didWriteToTempFile.bind(this)); |
| 1142 this._bufferedWriter = null; | 1151 this._bufferedWriter = null; |
| 1143 } | 1152 } |
| 1144 }, | 1153 }, |
| 1145 | 1154 |
| 1146 _didWriteToTempFile: function(tempFile) | 1155 _didWriteToTempFile: function(tempFile) |
| 1147 { | 1156 { |
| 1157 if (this._wasDisposed) { |
| 1158 if (tempFile) |
| 1159 tempFile.remove(); |
| 1160 return; |
| 1161 } |
| 1148 this._tempFile = tempFile; | 1162 this._tempFile = tempFile; |
| 1149 if (!tempFile) | 1163 if (!tempFile) |
| 1150 this._failedToCreateTempFile = true; | 1164 this._failedToCreateTempFile = true; |
| 1151 if (this._onTempFileReady) { | 1165 if (this._onTempFileReady) { |
| 1152 this._onTempFileReady(); | 1166 this._onTempFileReady(); |
| 1153 this._onTempFileReady = null; | 1167 this._onTempFileReady = null; |
| 1154 } | 1168 } |
| 1155 }, | 1169 }, |
| 1156 | 1170 |
| 1157 _setupWorker: function() | 1171 _setupWorker: function() |
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1741 }, | 1755 }, |
| 1742 | 1756 |
| 1743 /** | 1757 /** |
| 1744 * @return {number} | 1758 * @return {number} |
| 1745 */ | 1759 */ |
| 1746 boundarySpan: function() | 1760 boundarySpan: function() |
| 1747 { | 1761 { |
| 1748 return this._maximumBoundaries - this._minimumBoundaries; | 1762 return this._maximumBoundaries - this._minimumBoundaries; |
| 1749 } | 1763 } |
| 1750 } | 1764 } |
| OLD | NEW |