| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/V8ProfilerAgentImpl.h" | 5 #include "platform/v8_inspector/V8ProfilerAgentImpl.h" |
| 6 | 6 |
| 7 #include "platform/v8_inspector/Atomics.h" | 7 #include "platform/v8_inspector/Atomics.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/V8StackTraceImpl.h" | 10 #include "platform/v8_inspector/V8StackTraceImpl.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 | 114 |
| 115 class V8ProfilerAgentImpl::ProfileDescriptor { | 115 class V8ProfilerAgentImpl::ProfileDescriptor { |
| 116 public: | 116 public: |
| 117 ProfileDescriptor(const String16& id, const String16& title) | 117 ProfileDescriptor(const String16& id, const String16& title) |
| 118 : m_id(id) | 118 : m_id(id) |
| 119 , m_title(title) { } | 119 , m_title(title) { } |
| 120 String16 m_id; | 120 String16 m_id; |
| 121 String16 m_title; | 121 String16 m_title; |
| 122 }; | 122 }; |
| 123 | 123 |
| 124 V8ProfilerAgentImpl::V8ProfilerAgentImpl(V8InspectorSessionImpl* session, protoc
ol::Profiler::Frontend* frontend, protocol::DictionaryValue* state) | 124 V8ProfilerAgentImpl::V8ProfilerAgentImpl(V8InspectorSessionImpl* session, protoc
ol::FrontendChannel* frontendChannel, protocol::DictionaryValue* state) |
| 125 : m_session(session) | 125 : m_session(session) |
| 126 , m_isolate(m_session->debugger()->isolate()) | 126 , m_isolate(m_session->debugger()->isolate()) |
| 127 , m_state(state) | 127 , m_state(state) |
| 128 , m_frontend(frontend) | 128 , m_frontend(frontendChannel) |
| 129 , m_enabled(false) | 129 , m_enabled(false) |
| 130 , m_recordingCPUProfile(false) | 130 , m_recordingCPUProfile(false) |
| 131 { | 131 { |
| 132 } | 132 } |
| 133 | 133 |
| 134 V8ProfilerAgentImpl::~V8ProfilerAgentImpl() | 134 V8ProfilerAgentImpl::~V8ProfilerAgentImpl() |
| 135 { | 135 { |
| 136 } | 136 } |
| 137 | 137 |
| 138 void V8ProfilerAgentImpl::consoleProfile(const String16& title) | 138 void V8ProfilerAgentImpl::consoleProfile(const String16& title) |
| 139 { | 139 { |
| 140 if (!m_enabled) | 140 if (!m_enabled) |
| 141 return; | 141 return; |
| 142 DCHECK(m_frontend); | |
| 143 String16 id = nextProfileId(); | 142 String16 id = nextProfileId(); |
| 144 m_startedProfiles.append(ProfileDescriptor(id, title)); | 143 m_startedProfiles.append(ProfileDescriptor(id, title)); |
| 145 startProfiling(id); | 144 startProfiling(id); |
| 146 m_frontend->consoleProfileStarted(id, currentDebugLocation(m_session->debugg
er()), title); | 145 m_frontend.consoleProfileStarted(id, currentDebugLocation(m_session->debugge
r()), title); |
| 147 } | 146 } |
| 148 | 147 |
| 149 void V8ProfilerAgentImpl::consoleProfileEnd(const String16& title) | 148 void V8ProfilerAgentImpl::consoleProfileEnd(const String16& title) |
| 150 { | 149 { |
| 151 if (!m_enabled) | 150 if (!m_enabled) |
| 152 return; | 151 return; |
| 153 DCHECK(m_frontend); | |
| 154 String16 id; | 152 String16 id; |
| 155 String16 resolvedTitle; | 153 String16 resolvedTitle; |
| 156 // Take last started profile if no title was passed. | 154 // Take last started profile if no title was passed. |
| 157 if (title.isEmpty()) { | 155 if (title.isEmpty()) { |
| 158 if (m_startedProfiles.isEmpty()) | 156 if (m_startedProfiles.isEmpty()) |
| 159 return; | 157 return; |
| 160 id = m_startedProfiles.last().m_id; | 158 id = m_startedProfiles.last().m_id; |
| 161 resolvedTitle = m_startedProfiles.last().m_title; | 159 resolvedTitle = m_startedProfiles.last().m_title; |
| 162 m_startedProfiles.removeLast(); | 160 m_startedProfiles.removeLast(); |
| 163 } else { | 161 } else { |
| 164 for (size_t i = 0; i < m_startedProfiles.size(); i++) { | 162 for (size_t i = 0; i < m_startedProfiles.size(); i++) { |
| 165 if (m_startedProfiles[i].m_title == title) { | 163 if (m_startedProfiles[i].m_title == title) { |
| 166 resolvedTitle = title; | 164 resolvedTitle = title; |
| 167 id = m_startedProfiles[i].m_id; | 165 id = m_startedProfiles[i].m_id; |
| 168 m_startedProfiles.remove(i); | 166 m_startedProfiles.remove(i); |
| 169 break; | 167 break; |
| 170 } | 168 } |
| 171 } | 169 } |
| 172 if (id.isEmpty()) | 170 if (id.isEmpty()) |
| 173 return; | 171 return; |
| 174 } | 172 } |
| 175 std::unique_ptr<protocol::Profiler::CPUProfile> profile = stopProfiling(id,
true); | 173 std::unique_ptr<protocol::Profiler::CPUProfile> profile = stopProfiling(id,
true); |
| 176 if (!profile) | 174 if (!profile) |
| 177 return; | 175 return; |
| 178 std::unique_ptr<protocol::Debugger::Location> location = currentDebugLocatio
n(m_session->debugger()); | 176 std::unique_ptr<protocol::Debugger::Location> location = currentDebugLocatio
n(m_session->debugger()); |
| 179 m_frontend->consoleProfileFinished(id, std::move(location), std::move(profil
e), resolvedTitle); | 177 m_frontend.consoleProfileFinished(id, std::move(location), std::move(profile
), resolvedTitle); |
| 180 } | 178 } |
| 181 | 179 |
| 182 void V8ProfilerAgentImpl::enable(ErrorString*) | 180 void V8ProfilerAgentImpl::enable(ErrorString*) |
| 183 { | 181 { |
| 184 if (m_enabled) | 182 if (m_enabled) |
| 185 return; | 183 return; |
| 186 m_enabled = true; | 184 m_enabled = true; |
| 187 m_state->setBoolean(ProfilerAgentState::profilerEnabled, true); | 185 m_state->setBoolean(ProfilerAgentState::profilerEnabled, true); |
| 188 m_session->changeInstrumentationCounter(+1); | 186 m_session->changeInstrumentationCounter(+1); |
| 189 } | 187 } |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 profile->Delete(); | 283 profile->Delete(); |
| 286 return result; | 284 return result; |
| 287 } | 285 } |
| 288 | 286 |
| 289 bool V8ProfilerAgentImpl::isRecording() const | 287 bool V8ProfilerAgentImpl::isRecording() const |
| 290 { | 288 { |
| 291 return m_recordingCPUProfile || !m_startedProfiles.isEmpty(); | 289 return m_recordingCPUProfile || !m_startedProfiles.isEmpty(); |
| 292 } | 290 } |
| 293 | 291 |
| 294 } // namespace blink | 292 } // namespace blink |
| OLD | NEW |