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

Side by Side Diff: src/inspector/v8-heap-profiler-agent-impl.cc

Issue 2523743003: Roll third_party/inspector_protocol to 73028acaa3646789fd2a3bfd0d79eb2d91b696b3 (Closed)
Patch Set: one more commit to roll Created 4 years, 1 month 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
OLDNEW
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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 m_isolate->GetHeapProfiler()->ClearObjectIds(); 209 m_isolate->GetHeapProfiler()->ClearObjectIds();
210 m_state->setBoolean(HeapProfilerAgentState::heapProfilerEnabled, false); 210 m_state->setBoolean(HeapProfilerAgentState::heapProfilerEnabled, false);
211 return Response::OK(); 211 return Response::OK();
212 } 212 }
213 213
214 Response V8HeapProfilerAgentImpl::takeHeapSnapshot(Maybe<bool> reportProgress) { 214 Response V8HeapProfilerAgentImpl::takeHeapSnapshot(Maybe<bool> reportProgress) {
215 v8::HeapProfiler* profiler = m_isolate->GetHeapProfiler(); 215 v8::HeapProfiler* profiler = m_isolate->GetHeapProfiler();
216 if (!profiler) return Response::Error("Cannot access v8 heap profiler"); 216 if (!profiler) return Response::Error("Cannot access v8 heap profiler");
217 std::unique_ptr<HeapSnapshotProgress> progress; 217 std::unique_ptr<HeapSnapshotProgress> progress;
218 if (reportProgress.fromMaybe(false)) 218 if (reportProgress.fromMaybe(false))
219 progress = wrapUnique(new HeapSnapshotProgress(&m_frontend)); 219 progress = std::unique_ptr<HeapSnapshotProgress>(
220 new HeapSnapshotProgress(&m_frontend));
220 221
221 GlobalObjectNameResolver resolver(m_session); 222 GlobalObjectNameResolver resolver(m_session);
222 const v8::HeapSnapshot* snapshot = 223 const v8::HeapSnapshot* snapshot =
223 profiler->TakeHeapSnapshot(progress.get(), &resolver); 224 profiler->TakeHeapSnapshot(progress.get(), &resolver);
224 if (!snapshot) return Response::Error("Failed to take heap snapshot"); 225 if (!snapshot) return Response::Error("Failed to take heap snapshot");
225 HeapSnapshotOutputStream stream(&m_frontend); 226 HeapSnapshotOutputStream stream(&m_frontend);
226 snapshot->Serialize(&stream); 227 snapshot->Serialize(&stream);
227 const_cast<v8::HeapSnapshot*>(snapshot)->Delete(); 228 const_cast<v8::HeapSnapshot*>(snapshot)->Delete();
228 return Response::OK(); 229 return Response::OK();
229 } 230 }
(...skipping 23 matching lines...) Expand all
253 bool ok; 254 bool ok;
254 int id = inspectedHeapObjectId.toInteger(&ok); 255 int id = inspectedHeapObjectId.toInteger(&ok);
255 if (!ok) return Response::Error("Invalid heap snapshot object id"); 256 if (!ok) return Response::Error("Invalid heap snapshot object id");
256 257
257 v8::HandleScope handles(m_isolate); 258 v8::HandleScope handles(m_isolate);
258 v8::Local<v8::Object> heapObject = objectByHeapObjectId(m_isolate, id); 259 v8::Local<v8::Object> heapObject = objectByHeapObjectId(m_isolate, id);
259 if (heapObject.IsEmpty()) return Response::Error("Object is not available"); 260 if (heapObject.IsEmpty()) return Response::Error("Object is not available");
260 261
261 if (!m_session->inspector()->client()->isInspectableHeapObject(heapObject)) 262 if (!m_session->inspector()->client()->isInspectableHeapObject(heapObject))
262 return Response::Error("Object is not available"); 263 return Response::Error("Object is not available");
263 m_session->addInspectedObject(wrapUnique(new InspectableHeapObject(id))); 264 m_session->addInspectedObject(
265 std::unique_ptr<InspectableHeapObject>(new InspectableHeapObject(id)));
264 return Response::OK(); 266 return Response::OK();
265 } 267 }
266 268
267 Response V8HeapProfilerAgentImpl::getHeapObjectId( 269 Response V8HeapProfilerAgentImpl::getHeapObjectId(
268 const String16& objectId, String16* heapSnapshotObjectId) { 270 const String16& objectId, String16* heapSnapshotObjectId) {
269 v8::HandleScope handles(m_isolate); 271 v8::HandleScope handles(m_isolate);
270 v8::Local<v8::Value> value; 272 v8::Local<v8::Value> value;
271 v8::Local<v8::Context> context; 273 v8::Local<v8::Context> context;
272 Response response = 274 Response response =
273 m_session->unwrapObject(objectId, &value, &context, nullptr); 275 m_session->unwrapObject(objectId, &value, &context, nullptr);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 if (!v8Profile) 375 if (!v8Profile)
374 return Response::Error("Cannot access v8 sampled heap profile."); 376 return Response::Error("Cannot access v8 sampled heap profile.");
375 v8::AllocationProfile::Node* root = v8Profile->GetRootNode(); 377 v8::AllocationProfile::Node* root = v8Profile->GetRootNode();
376 *profile = protocol::HeapProfiler::SamplingHeapProfile::create() 378 *profile = protocol::HeapProfiler::SamplingHeapProfile::create()
377 .setHead(buildSampingHeapProfileNode(root)) 379 .setHead(buildSampingHeapProfileNode(root))
378 .build(); 380 .build();
379 return Response::OK(); 381 return Response::OK();
380 } 382 }
381 383
382 } // namespace v8_inspector 384 } // namespace v8_inspector
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698