void Profiler::startProfiling(ExecState* exec, const UString& title) { // Check if we currently have a Profile for this global ExecState and title. // If so return early and don't create a new Profile. ExecState* globalExec = exec ? exec->lexicalGlobalObject()->globalExec() : 0; for (size_t i = 0; i < m_currentProfiles.size(); ++i) { ProfileGenerator* profileGenerator = m_currentProfiles[i].get(); if (profileGenerator->originatingGlobalExec() == globalExec && profileGenerator->title() == title) return; } s_sharedEnabledProfilerReference = this; RefPtr<ProfileGenerator> profileGenerator = ProfileGenerator::create(title, exec, ++ProfilesUID); m_currentProfiles.append(profileGenerator); }
void Profiler::startProfiling(ExecState* exec, const String& title) { ASSERT_ARG(title, !title.isNull()); // Check if we currently have a Profile for this global ExecState and title. // If so return early and don't create a new Profile. JSGlobalObject* origin = exec ? exec->lexicalGlobalObject() : 0; for (size_t i = 0; i < m_currentProfiles.size(); ++i) { ProfileGenerator* profileGenerator = m_currentProfiles[i].get(); if (profileGenerator->origin() == origin && profileGenerator->title() == title) return; } exec->globalData().m_enabledProfiler = this; RefPtr<ProfileGenerator> profileGenerator = ProfileGenerator::create(exec, title, ++ProfilesUID); m_currentProfiles.append(profileGenerator); }
PassRefPtr<Profile> Profiler::stopProfiling(ExecState* exec, const String& title) { JSGlobalObject* origin = exec ? exec->lexicalGlobalObject() : 0; for (ptrdiff_t i = m_currentProfiles.size() - 1; i >= 0; --i) { ProfileGenerator* profileGenerator = m_currentProfiles[i].get(); if (profileGenerator->origin() == origin && (title.isNull() || profileGenerator->title() == title)) { profileGenerator->stopProfiling(); RefPtr<Profile> returnProfile = profileGenerator->profile(); m_currentProfiles.remove(i); if (!m_currentProfiles.size()) exec->globalData().m_enabledProfiler = 0; return returnProfile; } } return 0; }
PassRefPtr<Profile> Profiler::stopProfiling(ExecState* exec, const UString& title) { ExecState* globalExec = exec ? exec->lexicalGlobalObject()->globalExec() : 0; for (ptrdiff_t i = m_currentProfiles.size() - 1; i >= 0; --i) { ProfileGenerator* profileGenerator = m_currentProfiles[i].get(); if (profileGenerator->originatingGlobalExec() == globalExec && (title.isNull() || profileGenerator->title() == title)) { profileGenerator->stopProfiling(); RefPtr<Profile> returnProfile = profileGenerator->profile(); m_currentProfiles.remove(i); if (!m_currentProfiles.size()) s_sharedEnabledProfilerReference = 0; return returnProfile; } } return 0; }
void Profiler::stopProfiling(ExecState* exec, const UString& title) { ExecState* globalExec = exec->lexicalGlobalObject()->globalExec(); for (ptrdiff_t i = m_currentProfiles.size() - 1; i >= 0; --i) { ProfileGenerator* profileGenerator = m_currentProfiles[i].get(); if (!profileGenerator->stoppedProfiling() && profileGenerator->originatingGlobalExec() == globalExec && (title.isNull() || profileGenerator->title() == title)) m_currentProfiles[i]->stopProfiling(); } }