OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium 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 "platform/v8_inspector/V8HeapProfilerAgentImpl.h" | 5 #include "platform/v8_inspector/V8HeapProfilerAgentImpl.h" |
6 | 6 |
7 #include "platform/v8_inspector/InjectedScript.h" | 7 #include "platform/v8_inspector/InjectedScript.h" |
8 #include "platform/v8_inspector/V8DebuggerImpl.h" | 8 #include "platform/v8_inspector/V8DebuggerImpl.h" |
9 #include "platform/v8_inspector/V8InspectorSessionImpl.h" | 9 #include "platform/v8_inspector/V8InspectorSessionImpl.h" |
10 #include "platform/v8_inspector/V8StringUtil.h" | 10 #include "platform/v8_inspector/V8StringUtil.h" |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 m_frontend->heapStatsUpdate(std::move(statsDiff)); | 142 m_frontend->heapStatsUpdate(std::move(statsDiff)); |
143 return kContinue; | 143 return kContinue; |
144 } | 144 } |
145 | 145 |
146 private: | 146 private: |
147 protocol::Frontend::HeapProfiler* m_frontend; | 147 protocol::Frontend::HeapProfiler* m_frontend; |
148 }; | 148 }; |
149 | 149 |
150 } // namespace | 150 } // namespace |
151 | 151 |
152 V8HeapProfilerAgentImpl::V8HeapProfilerAgentImpl(V8InspectorSessionImpl* session
) | 152 V8HeapProfilerAgentImpl::V8HeapProfilerAgentImpl(V8InspectorSessionImpl* session
, protocol::Frontend::HeapProfiler* frontend, protocol::DictionaryValue* state) |
153 : m_session(session) | 153 : m_session(session) |
154 , m_isolate(session->debugger()->isolate()) | 154 , m_isolate(session->debugger()->isolate()) |
| 155 , m_frontend(frontend) |
| 156 , m_state(state) |
155 , m_hasTimer(false) | 157 , m_hasTimer(false) |
156 { | 158 { |
157 } | 159 } |
158 | 160 |
159 V8HeapProfilerAgentImpl::~V8HeapProfilerAgentImpl() | 161 V8HeapProfilerAgentImpl::~V8HeapProfilerAgentImpl() |
160 { | 162 { |
161 } | 163 } |
162 | 164 |
163 void V8HeapProfilerAgentImpl::clearFrontend() | |
164 { | |
165 ErrorString error; | |
166 disable(&error); | |
167 DCHECK(m_frontend); | |
168 m_frontend = nullptr; | |
169 } | |
170 | |
171 void V8HeapProfilerAgentImpl::restore() | 165 void V8HeapProfilerAgentImpl::restore() |
172 { | 166 { |
173 if (m_state->booleanProperty(HeapProfilerAgentState::heapProfilerEnabled, fa
lse)) | 167 if (m_state->booleanProperty(HeapProfilerAgentState::heapProfilerEnabled, fa
lse)) |
174 m_frontend->resetProfiles(); | 168 m_frontend->resetProfiles(); |
175 if (m_state->booleanProperty(HeapProfilerAgentState::heapObjectsTrackingEnab
led, false)) | 169 if (m_state->booleanProperty(HeapProfilerAgentState::heapObjectsTrackingEnab
led, false)) |
176 startTrackingHeapObjectsInternal(m_state->booleanProperty(HeapProfilerAg
entState::allocationTrackingEnabled, false)); | 170 startTrackingHeapObjectsInternal(m_state->booleanProperty(HeapProfilerAg
entState::allocationTrackingEnabled, false)); |
177 #if V8_MAJOR_VERSION >= 5 | 171 #if V8_MAJOR_VERSION >= 5 |
178 if (m_state->booleanProperty(HeapProfilerAgentState::samplingHeapProfilerEna
bled, false)) { | 172 if (m_state->booleanProperty(HeapProfilerAgentState::samplingHeapProfilerEna
bled, false)) { |
179 ErrorString error; | 173 ErrorString error; |
180 double samplingInterval = m_state->numberProperty(HeapProfilerAgentState
::samplingHeapProfilerInterval, -1); | 174 double samplingInterval = m_state->numberProperty(HeapProfilerAgentState
::samplingHeapProfilerInterval, -1); |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 *errorString = "Cannot access v8 sampled heap profile."; | 394 *errorString = "Cannot access v8 sampled heap profile."; |
401 return; | 395 return; |
402 } | 396 } |
403 v8::AllocationProfile::Node* root = v8Profile->GetRootNode(); | 397 v8::AllocationProfile::Node* root = v8Profile->GetRootNode(); |
404 *profile = protocol::HeapProfiler::SamplingHeapProfile::create() | 398 *profile = protocol::HeapProfiler::SamplingHeapProfile::create() |
405 .setHead(buildSampingHeapProfileNode(root)).build(); | 399 .setHead(buildSampingHeapProfileNode(root)).build(); |
406 #endif | 400 #endif |
407 } | 401 } |
408 | 402 |
409 } // namespace blink | 403 } // namespace blink |
OLD | NEW |