void InspectorHeapProfilerAgent::takeHeapSnapshot(ErrorString*, const bool* reportProgress) { class HeapSnapshotProgress: public ScriptProfiler::HeapSnapshotProgress { public: explicit HeapSnapshotProgress(InspectorFrontend::HeapProfiler* frontend) : m_frontend(frontend) { } void Start(int totalWork) { m_totalWork = totalWork; } void Worked(int workDone) { if (m_frontend) m_frontend->reportHeapSnapshotProgress(workDone, m_totalWork); } void Done() { } bool isCanceled() { return false; } private: InspectorFrontend::HeapProfiler* m_frontend; int m_totalWork; }; String title = makeString(UserInitiatedProfileNameHeap, '.', String::number(m_nextUserInitiatedHeapSnapshotNumber)); ++m_nextUserInitiatedHeapSnapshotNumber; HeapSnapshotProgress progress(reportProgress && *reportProgress ? m_frontend : 0); RefPtr<ScriptHeapSnapshot> snapshot = ScriptProfiler::takeHeapSnapshot(title, &progress); if (snapshot) { m_snapshots.add(snapshot->uid(), snapshot); if (m_frontend) m_frontend->addProfileHeader(createSnapshotHeader(*snapshot)); } }
void InspectorProfilerAgent::getProfileHeaders(ErrorString*, RefPtr<InspectorArray>* headers) { ProfilesMap::iterator profilesEnd = m_profiles.end(); for (ProfilesMap::iterator it = m_profiles.begin(); it != profilesEnd; ++it) (*headers)->pushObject(createProfileHeader(*it->second)); HeapSnapshotsMap::iterator snapshotsEnd = m_snapshots.end(); for (HeapSnapshotsMap::iterator it = m_snapshots.begin(); it != snapshotsEnd; ++it) (*headers)->pushObject(createSnapshotHeader(*it->second)); }
void InspectorHeapProfilerAgent::getProfileHeaders(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::HeapProfiler::ProfileHeader> >& headers) { m_state->setBoolean(HeapProfilerAgentState::profileHeadersRequested, true); headers = TypeBuilder::Array<TypeBuilder::HeapProfiler::ProfileHeader>::create(); IdToHeapSnapshotMap::iterator snapshotsEnd = m_snapshots.end(); for (IdToHeapSnapshotMap::iterator it = m_snapshots.begin(); it != snapshotsEnd; ++it) headers->addItem(createSnapshotHeader(*it->value)); }
void InspectorProfilerAgent::takeHeapSnapshot() { String title = String::format("%s.%d", UserInitiatedProfileName, m_nextUserInitiatedHeapSnapshotNumber++); RefPtr<ScriptHeapSnapshot> snapshot = ScriptProfiler::takeHeapSnapshot(title); if (snapshot) { m_snapshots.add(snapshot->uid(), snapshot); if (m_frontend) m_frontend->addProfileHeader(createSnapshotHeader(*snapshot)); } }
void InspectorProfilerAgent::getProfileHeaders(ErrorString*, RefPtr<TypeBuilder::Array<InspectorObject> >& headers) { headers = TypeBuilder::Array<InspectorObject>::create(); ProfilesMap::iterator profilesEnd = m_profiles.end(); for (ProfilesMap::iterator it = m_profiles.begin(); it != profilesEnd; ++it) headers->addItem(createProfileHeader(*it->second)); HeapSnapshotsMap::iterator snapshotsEnd = m_snapshots.end(); for (HeapSnapshotsMap::iterator it = m_snapshots.begin(); it != snapshotsEnd; ++it) headers->addItem(createSnapshotHeader(*it->second)); }
void InspectorProfilerAgent::getProfileHeaders(ErrorString*, RefPtr<Inspector::TypeBuilder::Array<Inspector::TypeBuilder::Profiler::ProfileHeader>>& headers) { m_profileHeadersRequested = true; headers = Inspector::TypeBuilder::Array<Inspector::TypeBuilder::Profiler::ProfileHeader>::create(); ProfilesMap::iterator profilesEnd = m_profiles.end(); for (ProfilesMap::iterator it = m_profiles.begin(); it != profilesEnd; ++it) headers->addItem(createProfileHeader(*it->value)); HeapSnapshotsMap::iterator snapshotsEnd = m_snapshots.end(); for (HeapSnapshotsMap::iterator it = m_snapshots.begin(); it != snapshotsEnd; ++it) headers->addItem(createSnapshotHeader(*it->value)); }
void InspectorProfilerAgent::takeHeapSnapshot() { String title = makeString(UserInitiatedProfileName, '.', String::number(m_nextUserInitiatedHeapSnapshotNumber)); ++m_nextUserInitiatedHeapSnapshotNumber; RefPtr<ScriptHeapSnapshot> snapshot = ScriptProfiler::takeHeapSnapshot(title); if (snapshot) { m_snapshots.add(snapshot->uid(), snapshot); if (m_frontend) m_frontend->addProfileHeader(createSnapshotHeader(*snapshot)); } }
void InspectorProfilerAgent::takeHeapSnapshot(ErrorString*, bool detailed) { String title = makeString(UserInitiatedProfileName, '.', String::number(m_nextUserInitiatedHeapSnapshotNumber)); ++m_nextUserInitiatedHeapSnapshotNumber; HeapSnapshotProgress progress(m_frontend); RefPtr<ScriptHeapSnapshot> snapshot = ScriptProfiler::takeHeapSnapshot(title, detailed ? &progress : 0); if (snapshot) { m_snapshots.add(snapshot->uid(), snapshot); if (m_frontend) m_frontend->addProfileHeader(createSnapshotHeader(*snapshot)); } }
void InspectorProfilerAgent::takeHeapSnapshot(ErrorString*, const bool* reportProgress) { String title = makeString(UserInitiatedProfileName, '.', String::number(m_nextUserInitiatedHeapSnapshotNumber)); ++m_nextUserInitiatedHeapSnapshotNumber; HeapSnapshotProgress progress(reportProgress && *reportProgress ? m_frontendDispatcher.get() : nullptr); RefPtr<ScriptHeapSnapshot> snapshot = ScriptProfiler::takeHeapSnapshot(title, &progress); if (snapshot) { m_snapshots.add(snapshot->uid(), snapshot); if (m_frontendDispatcher) m_frontendDispatcher->addProfileHeader(createSnapshotHeader(*snapshot)); } }
void InspectorProfilerAgent::getProfile(const String& type, unsigned uid, RefPtr<InspectorObject>* profileObject) { if (type == CPUProfileType) { ProfilesMap::iterator it = m_profiles.find(uid); if (it != m_profiles.end()) { *profileObject = createProfileHeader(*it->second); (*profileObject)->setObject("head", it->second->buildInspectorObjectForHead()); } } else if (type == HeapProfileType) { HeapSnapshotsMap::iterator it = m_snapshots.find(uid); if (it != m_snapshots.end()) { *profileObject = createSnapshotHeader(*it->second); (*profileObject)->setObject("head", it->second->buildInspectorObjectForHead()); } } }
void InspectorProfilerAgent::getProfile(const String& type, unsigned uid, RefPtr<InspectorObject>* profileObject) { if (type == CPUProfileType) { ProfilesMap::iterator it = m_profiles.find(uid); if (it != m_profiles.end()) { *profileObject = createProfileHeader(*it->second); (*profileObject)->setObject("head", it->second->buildInspectorObjectForHead()); } } else if (type == HeapProfileType) { HeapSnapshotsMap::iterator it = m_snapshots.find(uid); if (it != m_snapshots.end()) { RefPtr<ScriptHeapSnapshot> snapshot = it->second; *profileObject = createSnapshotHeader(*snapshot); if (m_frontend) { OutputStream stream(m_frontend, uid); snapshot->writeJSON(&stream); } } } }
void InspectorProfilerAgent::getProfile(ErrorString*, const String& type, int rawUid, RefPtr<InspectorObject>& profileObject) { unsigned uid = static_cast<unsigned>(rawUid); if (type == CPUProfileType) { ProfilesMap::iterator it = m_profiles.find(uid); if (it != m_profiles.end()) { profileObject = createProfileHeader(*it->second); profileObject->setObject("head", it->second->buildInspectorObjectForHead()); if (it->second->bottomUpHead()) profileObject->setObject("bottomUpHead", it->second->buildInspectorObjectForBottomUpHead()); } } else if (type == HeapProfileType) { HeapSnapshotsMap::iterator it = m_snapshots.find(uid); if (it != m_snapshots.end()) { RefPtr<ScriptHeapSnapshot> snapshot = it->second; profileObject = createSnapshotHeader(*snapshot); if (m_frontend) { OutputStream stream(m_frontend, uid); snapshot->writeJSON(&stream); } } } }