Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: src/inspector/V8ProfilerAgentImpl.cpp

Issue 2323273002: [inspector] Drop V8_VERSION checks. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/inspector/V8ProfilerAgentImpl.h ('k') | src/inspector/V8StackTraceImpl.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/V8ProfilerAgentImpl.h" 5 #include "src/inspector/V8ProfilerAgentImpl.h"
6 6
7 #include "src/inspector/Atomics.h" 7 #include "src/inspector/Atomics.h"
8 #include "src/inspector/StringUtil.h" 8 #include "src/inspector/StringUtil.h"
9 #include "src/inspector/V8Debugger.h" 9 #include "src/inspector/V8Debugger.h"
10 #include "src/inspector/V8InspectorImpl.h" 10 #include "src/inspector/V8InspectorImpl.h"
11 #include "src/inspector/V8InspectorSessionImpl.h" 11 #include "src/inspector/V8InspectorSessionImpl.h"
12 #include "src/inspector/V8StackTraceImpl.h" 12 #include "src/inspector/V8StackTraceImpl.h"
13 #include "src/inspector/protocol/Protocol.h" 13 #include "src/inspector/protocol/Protocol.h"
14 14
15 #include "include/v8-profiler.h" 15 #include "include/v8-profiler.h"
16 16
17 #include <vector> 17 #include <vector>
18 18
19 #define ENSURE_V8_VERSION(major, minor) \
20 (V8_MAJOR_VERSION * 1000 + V8_MINOR_VERSION >= (major)*1000 + (minor))
21
22 namespace v8_inspector { 19 namespace v8_inspector {
23 20
24 namespace ProfilerAgentState { 21 namespace ProfilerAgentState {
25 static const char samplingInterval[] = "samplingInterval"; 22 static const char samplingInterval[] = "samplingInterval";
26 static const char userInitiatedProfiling[] = "userInitiatedProfiling"; 23 static const char userInitiatedProfiling[] = "userInitiatedProfiling";
27 static const char profilerEnabled[] = "profilerEnabled"; 24 static const char profilerEnabled[] = "profilerEnabled";
28 } 25 }
29 26
30 namespace { 27 namespace {
31 28
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 protocol::DictionaryValue* state) 152 protocol::DictionaryValue* state)
156 : m_session(session), 153 : m_session(session),
157 m_isolate(m_session->inspector()->isolate()), 154 m_isolate(m_session->inspector()->isolate()),
158 m_profiler(nullptr), 155 m_profiler(nullptr),
159 m_state(state), 156 m_state(state),
160 m_frontend(frontendChannel), 157 m_frontend(frontendChannel),
161 m_enabled(false), 158 m_enabled(false),
162 m_recordingCPUProfile(false) {} 159 m_recordingCPUProfile(false) {}
163 160
164 V8ProfilerAgentImpl::~V8ProfilerAgentImpl() { 161 V8ProfilerAgentImpl::~V8ProfilerAgentImpl() {
165 #if ENSURE_V8_VERSION(5, 4)
166 if (m_profiler) m_profiler->Dispose(); 162 if (m_profiler) m_profiler->Dispose();
167 #endif
168 } 163 }
169 164
170 void V8ProfilerAgentImpl::consoleProfile(const String16& title) { 165 void V8ProfilerAgentImpl::consoleProfile(const String16& title) {
171 if (!m_enabled) return; 166 if (!m_enabled) return;
172 String16 id = nextProfileId(); 167 String16 id = nextProfileId();
173 m_startedProfiles.push_back(ProfileDescriptor(id, title)); 168 m_startedProfiles.push_back(ProfileDescriptor(id, title));
174 startProfiling(id); 169 startProfiling(id);
175 m_frontend.consoleProfileStarted( 170 m_frontend.consoleProfileStarted(
176 id, currentDebugLocation(m_session->inspector()), title); 171 id, currentDebugLocation(m_session->inspector()), title);
177 } 172 }
(...skipping 24 matching lines...) Expand all
202 if (!profile) return; 197 if (!profile) return;
203 std::unique_ptr<protocol::Debugger::Location> location = 198 std::unique_ptr<protocol::Debugger::Location> location =
204 currentDebugLocation(m_session->inspector()); 199 currentDebugLocation(m_session->inspector());
205 m_frontend.consoleProfileFinished(id, std::move(location), std::move(profile), 200 m_frontend.consoleProfileFinished(id, std::move(location), std::move(profile),
206 resolvedTitle); 201 resolvedTitle);
207 } 202 }
208 203
209 void V8ProfilerAgentImpl::enable(ErrorString*) { 204 void V8ProfilerAgentImpl::enable(ErrorString*) {
210 if (m_enabled) return; 205 if (m_enabled) return;
211 m_enabled = true; 206 m_enabled = true;
212 #if ENSURE_V8_VERSION(5, 4)
213 DCHECK(!m_profiler); 207 DCHECK(!m_profiler);
214 m_profiler = v8::CpuProfiler::New(m_isolate); 208 m_profiler = v8::CpuProfiler::New(m_isolate);
215 #endif
216 m_state->setBoolean(ProfilerAgentState::profilerEnabled, true); 209 m_state->setBoolean(ProfilerAgentState::profilerEnabled, true);
217 } 210 }
218 211
219 void V8ProfilerAgentImpl::disable(ErrorString* errorString) { 212 void V8ProfilerAgentImpl::disable(ErrorString* errorString) {
220 if (!m_enabled) return; 213 if (!m_enabled) return;
221 for (size_t i = m_startedProfiles.size(); i > 0; --i) 214 for (size_t i = m_startedProfiles.size(); i > 0; --i)
222 stopProfiling(m_startedProfiles[i - 1].m_id, false); 215 stopProfiling(m_startedProfiles[i - 1].m_id, false);
223 m_startedProfiles.clear(); 216 m_startedProfiles.clear();
224 stop(nullptr, nullptr); 217 stop(nullptr, nullptr);
225 #if ENSURE_V8_VERSION(5, 4)
226 m_profiler->Dispose(); 218 m_profiler->Dispose();
227 m_profiler = nullptr; 219 m_profiler = nullptr;
228 #endif
229 m_enabled = false; 220 m_enabled = false;
230 m_state->setBoolean(ProfilerAgentState::profilerEnabled, false); 221 m_state->setBoolean(ProfilerAgentState::profilerEnabled, false);
231 } 222 }
232 223
233 void V8ProfilerAgentImpl::setSamplingInterval(ErrorString* error, 224 void V8ProfilerAgentImpl::setSamplingInterval(ErrorString* error,
234 int interval) { 225 int interval) {
235 if (m_recordingCPUProfile) { 226 if (m_recordingCPUProfile) {
236 *error = "Cannot change sampling interval when profiling."; 227 *error = "Cannot change sampling interval when profiling.";
237 return; 228 return;
238 } 229 }
239 m_state->setInteger(ProfilerAgentState::samplingInterval, interval); 230 m_state->setInteger(ProfilerAgentState::samplingInterval, interval);
240 profiler()->SetSamplingInterval(interval); 231 m_profiler->SetSamplingInterval(interval);
241 } 232 }
242 233
243 void V8ProfilerAgentImpl::restore() { 234 void V8ProfilerAgentImpl::restore() {
244 DCHECK(!m_enabled); 235 DCHECK(!m_enabled);
245 if (!m_state->booleanProperty(ProfilerAgentState::profilerEnabled, false)) 236 if (!m_state->booleanProperty(ProfilerAgentState::profilerEnabled, false))
246 return; 237 return;
247 m_enabled = true; 238 m_enabled = true;
248 #if ENSURE_V8_VERSION(5, 4)
249 DCHECK(!m_profiler); 239 DCHECK(!m_profiler);
250 m_profiler = v8::CpuProfiler::New(m_isolate); 240 m_profiler = v8::CpuProfiler::New(m_isolate);
251 #endif
252 int interval = 0; 241 int interval = 0;
253 m_state->getInteger(ProfilerAgentState::samplingInterval, &interval); 242 m_state->getInteger(ProfilerAgentState::samplingInterval, &interval);
254 if (interval) profiler()->SetSamplingInterval(interval); 243 if (interval) m_profiler->SetSamplingInterval(interval);
255 if (m_state->booleanProperty(ProfilerAgentState::userInitiatedProfiling, 244 if (m_state->booleanProperty(ProfilerAgentState::userInitiatedProfiling,
256 false)) { 245 false)) {
257 ErrorString error; 246 ErrorString error;
258 start(&error); 247 start(&error);
259 } 248 }
260 } 249 }
261 250
262 void V8ProfilerAgentImpl::start(ErrorString* error) { 251 void V8ProfilerAgentImpl::start(ErrorString* error) {
263 if (m_recordingCPUProfile) return; 252 if (m_recordingCPUProfile) return;
264 if (!m_enabled) { 253 if (!m_enabled) {
(...skipping 23 matching lines...) Expand all
288 m_frontendInitiatedProfileId = String16(); 277 m_frontendInitiatedProfileId = String16();
289 m_state->setBoolean(ProfilerAgentState::userInitiatedProfiling, false); 278 m_state->setBoolean(ProfilerAgentState::userInitiatedProfiling, false);
290 } 279 }
291 280
292 String16 V8ProfilerAgentImpl::nextProfileId() { 281 String16 V8ProfilerAgentImpl::nextProfileId() {
293 return String16::fromInteger(atomicIncrement(&s_lastProfileId)); 282 return String16::fromInteger(atomicIncrement(&s_lastProfileId));
294 } 283 }
295 284
296 void V8ProfilerAgentImpl::startProfiling(const String16& title) { 285 void V8ProfilerAgentImpl::startProfiling(const String16& title) {
297 v8::HandleScope handleScope(m_isolate); 286 v8::HandleScope handleScope(m_isolate);
298 profiler()->StartProfiling(toV8String(m_isolate, title), true); 287 m_profiler->StartProfiling(toV8String(m_isolate, title), true);
299 } 288 }
300 289
301 std::unique_ptr<protocol::Profiler::Profile> V8ProfilerAgentImpl::stopProfiling( 290 std::unique_ptr<protocol::Profiler::Profile> V8ProfilerAgentImpl::stopProfiling(
302 const String16& title, bool serialize) { 291 const String16& title, bool serialize) {
303 v8::HandleScope handleScope(m_isolate); 292 v8::HandleScope handleScope(m_isolate);
304 v8::CpuProfile* profile = 293 v8::CpuProfile* profile =
305 profiler()->StopProfiling(toV8String(m_isolate, title)); 294 m_profiler->StopProfiling(toV8String(m_isolate, title));
306 if (!profile) return nullptr; 295 if (!profile) return nullptr;
307 std::unique_ptr<protocol::Profiler::Profile> result; 296 std::unique_ptr<protocol::Profiler::Profile> result;
308 if (serialize) result = createCPUProfile(m_isolate, profile); 297 if (serialize) result = createCPUProfile(m_isolate, profile);
309 profile->Delete(); 298 profile->Delete();
310 return result; 299 return result;
311 } 300 }
312 301
313 bool V8ProfilerAgentImpl::isRecording() const { 302 bool V8ProfilerAgentImpl::isRecording() const {
314 return m_recordingCPUProfile || !m_startedProfiles.empty(); 303 return m_recordingCPUProfile || !m_startedProfiles.empty();
315 } 304 }
316 305
317 v8::CpuProfiler* V8ProfilerAgentImpl::profiler() {
318 #if ENSURE_V8_VERSION(5, 4)
319 return m_profiler;
320 #else
321 return m_isolate->GetCpuProfiler();
322 #endif
323 }
324
325 } // namespace v8_inspector 306 } // namespace v8_inspector
OLDNEW
« no previous file with comments | « src/inspector/V8ProfilerAgentImpl.h ('k') | src/inspector/V8StackTraceImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698