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; }
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; }