Changeset 36113 in webkit for trunk/JavaScriptCore
- Timestamp:
- Sep 5, 2008, 10:52:39 AM (17 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r36106 r36113 1 2008-09-05 Kevin McCullough <[email protected]> 2 3 Reviewed by Sam and Alexey. 4 5 Make the profiler work with a null exec state. This will allow other 6 applications start the profiler to get DTrace probes going without 7 needing a WebView. 8 9 * ChangeLog: 10 * profiler/ProfileGenerator.cpp: 11 (KJS::ProfileGenerator::ProfileGenerator): 12 (KJS::ProfileGenerator::willExecute): 13 (KJS::ProfileGenerator::didExecute): 14 * profiler/Profiler.cpp: 15 (KJS::Profiler::startProfiling): 16 (KJS::Profiler::stopProfiling): 17 (KJS::dispatchFunctionToProfiles): 18 1 19 2008-09-04 Gavin Barraclough <[email protected]> 2 20 -
trunk/JavaScriptCore/profiler/ProfileGenerator.cpp
r36068 r36113 46 46 47 47 ProfileGenerator::ProfileGenerator(const UString& title, ExecState* originatingExec, unsigned uid) 48 : m_originatingGlobalExec(originatingExec->lexicalGlobalObject()->globalExec()) 49 , m_profileGroup(originatingExec->lexicalGlobalObject()->profileGroup()) 50 48 : m_originatingGlobalExec(originatingExec ? originatingExec->lexicalGlobalObject()->globalExec() : 0) 49 , m_profileGroup(originatingExec ? originatingExec->lexicalGlobalObject()->profileGroup() : 0) 51 50 { 52 51 m_profile = Profile::create(title, uid); 53 52 m_currentNode = m_head = m_profile->head(); 54 55 addParentForConsoleStart(originatingExec);53 if (originatingExec) 54 addParentForConsoleStart(originatingExec); 56 55 } 57 56 … … 81 80 } 82 81 82 if (!m_originatingGlobalExec) 83 return; 84 83 85 ASSERT_ARG(m_currentNode, m_currentNode); 84 86 m_currentNode = m_currentNode->willExecute(callIdentifier); … … 92 94 JAVASCRIPTCORE_PROFILE_DID_EXECUTE(m_profileGroup, const_cast<char*>(name.c_str()), const_cast<char*>(url.c_str()), callIdentifier.m_lineNumber); 93 95 } 96 97 if (!m_originatingGlobalExec) 98 return; 94 99 95 100 ASSERT_ARG(m_currentNode, m_currentNode); -
trunk/JavaScriptCore/profiler/Profiler.cpp
r36068 r36113 59 59 void Profiler::startProfiling(ExecState* exec, const UString& title) 60 60 { 61 ASSERT_ARG(exec, exec);62 63 61 // Check if we currently have a Profile for this global ExecState and title. 64 62 // If so return early and don't create a new Profile. 65 ExecState* globalExec = exec->lexicalGlobalObject()->globalExec(); 63 ExecState* globalExec = exec ? exec->lexicalGlobalObject()->globalExec() : 0; 64 66 65 for (size_t i = 0; i < m_currentProfiles.size(); ++i) { 67 66 ProfileGenerator* profileGenerator = m_currentProfiles[i].get(); … … 77 76 PassRefPtr<Profile> Profiler::stopProfiling(ExecState* exec, const UString& title) 78 77 { 79 ExecState* globalExec = exec ->lexicalGlobalObject()->globalExec();78 ExecState* globalExec = exec ? exec->lexicalGlobalObject()->globalExec() : 0; 80 79 for (ptrdiff_t i = m_currentProfiles.size() - 1; i >= 0; --i) { 81 80 ProfileGenerator* profileGenerator = m_currentProfiles[i].get(); … … 98 97 { 99 98 for (size_t i = 0; i < profiles.size(); ++i) { 100 if (profiles[i]->profileGroup() == currentProfileTargetGroup )99 if (profiles[i]->profileGroup() == currentProfileTargetGroup || !profiles[i]->originatingGlobalExec()) 101 100 (profiles[i].get()->*function)(callIdentifier); 102 101 }
Note:
See TracChangeset
for help on using the changeset viewer.