| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/inspector/v8-heap-profiler-agent-impl.h" | 5 #include "src/inspector/v8-heap-profiler-agent-impl.h" |
| 6 | 6 |
| 7 #include "src/inspector/injected-script.h" | 7 #include "src/inspector/injected-script.h" |
| 8 #include "src/inspector/protocol/Protocol.h" | 8 #include "src/inspector/protocol/Protocol.h" |
| 9 #include "src/inspector/string-util.h" | 9 #include "src/inspector/string-util.h" |
| 10 #include "src/inspector/v8-debugger.h" | 10 #include "src/inspector/v8-debugger.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 static const char heapProfilerEnabled[] = "heapProfilerEnabled"; | 23 static const char heapProfilerEnabled[] = "heapProfilerEnabled"; |
| 24 static const char heapObjectsTrackingEnabled[] = "heapObjectsTrackingEnabled"; | 24 static const char heapObjectsTrackingEnabled[] = "heapObjectsTrackingEnabled"; |
| 25 static const char allocationTrackingEnabled[] = "allocationTrackingEnabled"; | 25 static const char allocationTrackingEnabled[] = "allocationTrackingEnabled"; |
| 26 static const char samplingHeapProfilerEnabled[] = "samplingHeapProfilerEnabled"; | 26 static const char samplingHeapProfilerEnabled[] = "samplingHeapProfilerEnabled"; |
| 27 static const char samplingHeapProfilerInterval[] = | 27 static const char samplingHeapProfilerInterval[] = |
| 28 "samplingHeapProfilerInterval"; | 28 "samplingHeapProfilerInterval"; |
| 29 } | 29 } |
| 30 | 30 |
| 31 class HeapSnapshotProgress final : public v8::ActivityControl { | 31 class HeapSnapshotProgress final : public v8::ActivityControl { |
| 32 public: | 32 public: |
| 33 HeapSnapshotProgress(protocol::HeapProfiler::Frontend* frontend) | 33 explicit HeapSnapshotProgress(protocol::HeapProfiler::Frontend* frontend) |
| 34 : m_frontend(frontend) {} | 34 : m_frontend(frontend) {} |
| 35 ControlOption ReportProgressValue(int done, int total) override { | 35 ControlOption ReportProgressValue(int done, int total) override { |
| 36 m_frontend->reportHeapSnapshotProgress(done, total, | 36 m_frontend->reportHeapSnapshotProgress(done, total, |
| 37 protocol::Maybe<bool>()); | 37 protocol::Maybe<bool>()); |
| 38 if (done >= total) { | 38 if (done >= total) { |
| 39 m_frontend->reportHeapSnapshotProgress(total, total, true); | 39 m_frontend->reportHeapSnapshotProgress(total, total, true); |
| 40 } | 40 } |
| 41 m_frontend->flush(); | 41 m_frontend->flush(); |
| 42 return kContinue; | 42 return kContinue; |
| 43 } | 43 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 71 } | 71 } |
| 72 | 72 |
| 73 private: | 73 private: |
| 74 size_t m_offset; | 74 size_t m_offset; |
| 75 std::vector<char> m_strings; | 75 std::vector<char> m_strings; |
| 76 V8InspectorSessionImpl* m_session; | 76 V8InspectorSessionImpl* m_session; |
| 77 }; | 77 }; |
| 78 | 78 |
| 79 class HeapSnapshotOutputStream final : public v8::OutputStream { | 79 class HeapSnapshotOutputStream final : public v8::OutputStream { |
| 80 public: | 80 public: |
| 81 HeapSnapshotOutputStream(protocol::HeapProfiler::Frontend* frontend) | 81 explicit HeapSnapshotOutputStream(protocol::HeapProfiler::Frontend* frontend) |
| 82 : m_frontend(frontend) {} | 82 : m_frontend(frontend) {} |
| 83 void EndOfStream() override {} | 83 void EndOfStream() override {} |
| 84 int GetChunkSize() override { return 102400; } | 84 int GetChunkSize() override { return 102400; } |
| 85 WriteResult WriteAsciiChunk(char* data, int size) override { | 85 WriteResult WriteAsciiChunk(char* data, int size) override { |
| 86 m_frontend->addHeapSnapshotChunk(String16(data, size)); | 86 m_frontend->addHeapSnapshotChunk(String16(data, size)); |
| 87 m_frontend->flush(); | 87 m_frontend->flush(); |
| 88 return kContinue; | 88 return kContinue; |
| 89 } | 89 } |
| 90 | 90 |
| 91 private: | 91 private: |
| (...skipping 14 matching lines...) Expand all Loading... |
| 106 v8::Local<v8::Value> get(v8::Local<v8::Context> context) override { | 106 v8::Local<v8::Value> get(v8::Local<v8::Context> context) override { |
| 107 return objectByHeapObjectId(context->GetIsolate(), m_heapObjectId); | 107 return objectByHeapObjectId(context->GetIsolate(), m_heapObjectId); |
| 108 } | 108 } |
| 109 | 109 |
| 110 private: | 110 private: |
| 111 int m_heapObjectId; | 111 int m_heapObjectId; |
| 112 }; | 112 }; |
| 113 | 113 |
| 114 class HeapStatsStream final : public v8::OutputStream { | 114 class HeapStatsStream final : public v8::OutputStream { |
| 115 public: | 115 public: |
| 116 HeapStatsStream(protocol::HeapProfiler::Frontend* frontend) | 116 explicit HeapStatsStream(protocol::HeapProfiler::Frontend* frontend) |
| 117 : m_frontend(frontend) {} | 117 : m_frontend(frontend) {} |
| 118 | 118 |
| 119 void EndOfStream() override {} | 119 void EndOfStream() override {} |
| 120 | 120 |
| 121 WriteResult WriteAsciiChunk(char* data, int size) override { | 121 WriteResult WriteAsciiChunk(char* data, int size) override { |
| 122 DCHECK(false); | 122 DCHECK(false); |
| 123 return kAbort; | 123 return kAbort; |
| 124 } | 124 } |
| 125 | 125 |
| 126 WriteResult WriteHeapStatsChunk(v8::HeapStatsUpdate* updateData, | 126 WriteResult WriteHeapStatsChunk(v8::HeapStatsUpdate* updateData, |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 *errorString = "Cannot access v8 sampled heap profile."; | 398 *errorString = "Cannot access v8 sampled heap profile."; |
| 399 return; | 399 return; |
| 400 } | 400 } |
| 401 v8::AllocationProfile::Node* root = v8Profile->GetRootNode(); | 401 v8::AllocationProfile::Node* root = v8Profile->GetRootNode(); |
| 402 *profile = protocol::HeapProfiler::SamplingHeapProfile::create() | 402 *profile = protocol::HeapProfiler::SamplingHeapProfile::create() |
| 403 .setHead(buildSampingHeapProfileNode(root)) | 403 .setHead(buildSampingHeapProfileNode(root)) |
| 404 .build(); | 404 .build(); |
| 405 } | 405 } |
| 406 | 406 |
| 407 } // namespace v8_inspector | 407 } // namespace v8_inspector |
| OLD | NEW |