Changeset 64642 in webkit
- Timestamp:
- Aug 4, 2010 5:22:31 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 1 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/Android.jscbindings.mk
r64517 r64642 171 171 bindings/js/ScriptFunctionCall.cpp \ 172 172 bindings/js/ScriptObject.cpp \ 173 bindings/js/ScriptProfile.cpp \ 173 174 bindings/js/ScriptState.cpp \ 174 175 bindings/js/ScriptValue.cpp \ -
trunk/WebCore/CMakeLists.txt
r64577 r64642 685 685 bindings/js/ScriptGCEvent.cpp 686 686 bindings/js/ScriptObject.cpp 687 bindings/js/ScriptProfile.cpp 687 688 bindings/js/ScriptProfiler.cpp 688 689 bindings/js/ScriptState.cpp -
trunk/WebCore/ChangeLog
r64641 r64642 1 2010-08-04 Yury Semikhatsky <yurys@chromium.org> 2 3 Reviewed by Pavel Feldman. 4 5 Web Inspector: serialize CPU profiles to InspectorValues instead of 6 using JS wrappers. 7 https://bugs.webkit.org/show_bug.cgi?id=43475 8 9 * Android.jscbindings.mk: 10 * CMakeLists.txt: 11 * GNUmakefile.am: 12 * WebCore.pro: 13 * WebCore.vcproj/WebCore.vcproj: 14 * WebCore.xcodeproj/project.pbxproj: 15 * bindings/js/ScriptProfile.h: 16 * bindings/js/ScriptProfiler.cpp: 17 (WebCore::ScriptProfiler::stop): 18 * bindings/scripts/CodeGeneratorJS.pm: 19 * bindings/v8/ScriptProfile.cpp: 20 (WebCore::buildInspectorObjectFor): 21 (WebCore::ScriptProfile::buildInspectorObjectForHead): 22 * bindings/v8/ScriptProfile.h: 23 * inspector/Inspector.idl: 24 * inspector/InspectorController.cpp: 25 (WebCore::InspectorController::addProfile): 26 (WebCore::InspectorController::addProfileFinishedMessageToConsole): 27 (WebCore::InspectorController::getProfileHeaders): 28 (WebCore::InspectorController::getProfile): 29 (WebCore::InspectorController::createProfileHeader): 30 * inspector/InspectorController.h: 31 * inspector/InspectorFrontend.cpp: 32 * inspector/InspectorFrontend.h: 33 1 34 2010-08-04 Andreas Kling <andreas.kling@nokia.com> 2 35 -
trunk/WebCore/GNUmakefile.am
r64580 r64642 777 777 WebCore/bindings/js/ScriptObject.cpp \ 778 778 WebCore/bindings/js/ScriptObject.h \ 779 WebCore/bindings/js/ScriptProfile.cpp \ 779 780 WebCore/bindings/js/ScriptProfile.h \ 780 781 WebCore/bindings/js/ScriptProfileNode.h \ -
trunk/WebCore/WebCore.pro
r64577 r64642 379 379 bindings/js/ScriptGCEvent.cpp \ 380 380 bindings/js/ScriptObject.cpp \ 381 bindings/js/ScriptProfile.cpp \ 381 382 bindings/js/ScriptState.cpp \ 382 383 bindings/js/ScriptValue.cpp \ -
trunk/WebCore/WebCore.vcproj/WebCore.vcproj
r64607 r64642 48249 48249 </File> 48250 48250 <File 48251 RelativePath="..\bindings\js\ScriptProfile.cpp" 48252 > 48253 </File> 48254 <File 48251 48255 RelativePath="..\bindings\js\ScriptSourceCode.h" 48252 48256 > -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r64637 r64642 5188 5188 EDE3A5000C7A430600956A37 /* ColorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE3A4FF0C7A430600956A37 /* ColorMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5189 5189 EDEC98030AED7E170059137F /* WebCorePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = EDEC98020AED7E170059137F /* WebCorePrefix.h */; }; 5190 F33F0282120947F200E5743A /* ScriptProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F33F0281120947F200E5743A /* ScriptProfile.cpp */; }; 5190 5191 F344C7141125B82C00F26EEE /* InspectorFrontendClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5191 5192 F344C75311294D9D00F26EEE /* InspectorFrontendClientLocal.h in Headers */ = {isa = PBXBuildFile; fileRef = F344C75211294D9D00F26EEE /* InspectorFrontendClientLocal.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 10921 10922 EDE3A4FF0C7A430600956A37 /* ColorMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorMac.h; sourceTree = "<group>"; }; 10922 10923 EDEC98020AED7E170059137F /* WebCorePrefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCorePrefix.h; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; }; 10924 F33F0281120947F200E5743A /* ScriptProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptProfile.cpp; sourceTree = "<group>"; }; 10923 10925 F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontendClient.h; sourceTree = "<group>"; }; 10924 10926 F344C75211294D9D00F26EEE /* InspectorFrontendClientLocal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontendClientLocal.h; sourceTree = "<group>"; }; … … 15823 15825 41F066E30F64BCF600A07EAC /* ScriptObject.cpp */, 15824 15826 41F066E20F64BCF600A07EAC /* ScriptObject.h */, 15827 F33F0281120947F200E5743A /* ScriptProfile.cpp */, 15825 15828 9F72304C11184B4100AD0126 /* ScriptProfile.h */, 15826 15829 9FA37EE31172FC8000C4CD55 /* ScriptProfileNode.h */, … … 21918 21921 4FD8D0F2119C718B002FA825 /* ScriptGCEvent.cpp in Sources */, 21919 21922 41F066E50F64BCF600A07EAC /* ScriptObject.cpp in Sources */, 21923 F33F0282120947F200E5743A /* ScriptProfile.cpp in Sources */, 21920 21924 9F72305011184B4100AD0126 /* ScriptProfiler.cpp in Sources */, 21921 21925 4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */, -
trunk/WebCore/bindings/js/ScriptProfile.h
r54277 r64642 29 29 30 30 #if ENABLE(JAVASCRIPT_DEBUGGER) 31 #include <profiler/Profile.h> 31 #include "ScriptProfileNode.h" 32 #include <wtf/PassRefPtr.h> 33 #include <wtf/RefCounted.h> 34 #include <wtf/RefPtr.h> 35 36 namespace JSC { 37 class Profile; 38 } 32 39 33 40 namespace WebCore { 34 41 35 typedef JSC::Profile ScriptProfile; 42 class InspectorObject; 43 class String; 44 45 class ScriptProfile : public RefCounted<ScriptProfile> { 46 public: 47 static PassRefPtr<ScriptProfile> create(PassRefPtr<JSC::Profile> profile); 48 virtual ~ScriptProfile(); 49 50 String title() const; 51 unsigned int uid() const; 52 ScriptProfileNode* head() const; 53 54 PassRefPtr<InspectorObject> buildInspectorObjectForHead() const; 55 56 private: 57 ScriptProfile(PassRefPtr<JSC::Profile> profile); 58 59 RefPtr<JSC::Profile> m_profile; 60 }; 61 36 62 37 63 } // namespace WebCore -
trunk/WebCore/bindings/js/ScriptProfiler.cpp
r57738 r64642 43 43 PassRefPtr<ScriptProfile> ScriptProfiler::stop(ScriptState* state, const String& title) 44 44 { 45 return JSC::Profiler::profiler()->stopProfiling(state, stringToUString(title)); 45 RefPtr<JSC::Profile> profile = JSC::Profiler::profiler()->stopProfiling(state, stringToUString(title)); 46 return ScriptProfile::create(profile); 46 47 } 47 48 -
trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm
r64537 r64642 300 300 { 301 301 my $type = shift; 302 return 1 if ($type eq "ScriptProfile " or $type eq "ScriptProfileNode");302 return 1 if ($type eq "ScriptProfileNode"); 303 303 return 0; 304 304 } -
trunk/WebCore/bindings/v8/ScriptProfile.cpp
r63965 r64642 30 30 31 31 #include "config.h" 32 33 32 #include "ScriptProfile.h" 34 33 34 #include "InspectorValues.h" 35 35 #include "V8Binding.h" 36 37 36 #include <v8-profiler.h> 37 #include <wtf/PassRefPtr.h> 38 #include <wtf/RefPtr.h> 38 39 39 40 namespace WebCore { … … 55 56 } 56 57 58 static PassRefPtr<InspectorObject> buildInspectorObjectFor(const v8::CpuProfileNode* node) 59 { 60 v8::HandleScope handleScope; 61 RefPtr<InspectorObject> result = InspectorObject::create(); 62 result->setString("functionName", toWebCoreString(node->GetFunctionName())); 63 result->setString("url", toWebCoreString(node->GetScriptResourceName())); 64 result->setNumber("lineNumber", node->GetLineNumber()); 65 result->setNumber("totalTime", node->GetTotalTime()); 66 result->setNumber("selfTime", node->GetSelfTime()); 67 result->setNumber("numberOfCalls", 0); 68 result->setBool("visible", true); 69 result->setNumber("callUID", node->GetCallUid()); 70 71 RefPtr<InspectorArray> children = InspectorArray::create(); 72 const int childrenCount = node->GetChildrenCount(); 73 for (int i = 0; i < childrenCount; i++) { 74 const v8::CpuProfileNode* child = node->GetChild(i); 75 children->push(buildInspectorObjectFor(child)); 76 } 77 result->set("children", children); 78 return result; 79 } 80 81 PassRefPtr<InspectorObject> ScriptProfile::buildInspectorObjectForHead() const 82 { 83 return buildInspectorObjectFor(m_profile->GetTopDownRoot()); 84 } 85 57 86 } // namespace WebCore -
trunk/WebCore/bindings/v8/ScriptProfile.h
r57505 r64642 41 41 namespace WebCore { 42 42 43 class InspectorObject; 44 43 45 class ScriptProfile : public RefCounted<ScriptProfile> { 44 46 public: … … 53 55 PassRefPtr<ScriptProfileNode> head() const; 54 56 55 protected: 57 PassRefPtr<InspectorObject> buildInspectorObjectForHead() const; 58 59 private: 56 60 ScriptProfile(const v8::CpuProfile* profile) 57 61 : m_profile(profile) 58 62 {} 59 63 60 private:61 64 const v8::CpuProfile* m_profile; 62 65 }; -
trunk/WebCore/inspector/Inspector.idl
r64547 r64642 50 50 [notify] void pausedScript(out Value callFrames); 51 51 [notify] void resumedScript(); 52 [notify] void addProfileHeader(out Object header); 52 53 #endif 53 54 … … 98 99 [handler=Controller] void stopProfiling(); 99 100 100 [handler=Controller] void getProfileHeaders(in long callId );101 [handler=Controller] void getProfile(in long callId, in unsigned long uid );101 [handler=Controller] void getProfileHeaders(in long callId, out Array headers); 102 [handler=Controller] void getProfile(in long callId, in unsigned long uid, out Object profile); 102 103 103 104 [handler=Controller] void removeProfile(in unsigned long uid); -
trunk/WebCore/inspector/InspectorController.cpp
r64547 r64642 109 109 #if ENABLE(JAVASCRIPT_DEBUGGER) 110 110 #include "ScriptDebugServer.h" 111 #if USE(JSC)112 #include <runtime/JSLock.h>113 #include <runtime/UString.h>114 #include "JSScriptProfile.h"115 #else116 #include "ScriptScope.h"117 #include "V8ScriptProfile.h"118 #endif119 111 #endif 120 112 … … 1499 1491 m_profiles.add(profile->uid(), profile); 1500 1492 1501 if (m_frontend) { 1502 #if USE(JSC) 1503 JSC::JSLock lock(JSC::SilenceAssertionsOnly); 1504 #endif 1505 m_frontend->addProfileHeader(createProfileHeader(*profile)); 1493 if (m_remoteFrontend) { 1494 m_remoteFrontend->addProfileHeader(createProfileHeader(*profile)); 1506 1495 } 1507 1496 … … 1513 1502 RefPtr<ScriptProfile> profile = prpProfile; 1514 1503 1515 #if USE(JSC)1516 String title = ustringToString(profile->title());1517 #else1518 1504 String title = profile->title(); 1519 #endif1520 1505 String message = String::format("Profile \"webkit-profile://%s/%s#%d\" finished.", CPUProfileType, encodeWithURLEscapeSequences(title).utf8().data(), profile->uid()); 1521 1506 addMessageToConsole(JSMessageSource, LogMessageType, LogMessageLevel, message, lineNumber, sourceURL); … … 1549 1534 void InspectorController::getProfileHeaders(long callId) 1550 1535 { 1551 if (!m_ frontend)1552 return; 1553 ScriptArray result = m_frontend->newScriptArray();1536 if (!m_remoteFrontend) 1537 return; 1538 RefPtr<InspectorArray> result = InspectorArray::create(); 1554 1539 ProfilesMap::iterator profilesEnd = m_profiles.end(); 1555 int i = 0;1556 1540 for (ProfilesMap::iterator it = m_profiles.begin(); it != profilesEnd; ++it) 1557 result .set(i++,createProfileHeader(*it->second));1558 m_ frontend->didGetProfileHeaders(callId, result);1541 result->push(createProfileHeader(*it->second)); 1542 m_remoteFrontend->didGetProfileHeaders(callId, result); 1559 1543 } 1560 1544 … … 1565 1549 ProfilesMap::iterator it = m_profiles.find(uid); 1566 1550 if (it != m_profiles.end()) { 1567 #if USE(JSC) 1568 m_frontend->didGetProfile(callId, toJS(m_frontend->scriptState(), it->second.get())); 1569 #else 1570 ScriptScope scope(m_frontend->scriptState()); 1571 m_frontend->didGetProfile(callId, toV8(it->second.get())); 1572 #endif 1573 } 1574 } 1575 1576 ScriptObject InspectorController::createProfileHeader(const ScriptProfile& profile) 1577 { 1578 #if USE(JSC) 1579 String title = ustringToString(profile.title()); 1580 #else 1581 String title = profile.title(); 1582 #endif 1583 1584 ScriptObject header = m_frontend->newScriptObject(); 1585 header.set("title", title); 1586 header.set("uid", profile.uid()); 1587 header.set("typeId", String(CPUProfileType)); 1551 RefPtr<InspectorObject> profileObject = createProfileHeader(*it->second); 1552 profileObject->set("head", it->second->buildInspectorObjectForHead()); 1553 m_remoteFrontend->didGetProfile(callId, profileObject); 1554 } 1555 } 1556 1557 PassRefPtr<InspectorObject> InspectorController::createProfileHeader(const ScriptProfile& profile) 1558 { 1559 RefPtr<InspectorObject> header = InspectorObject::create(); 1560 header->setString("title", profile.title()); 1561 header->setNumber("uid", profile.uid()); 1562 header->setString("typeId", String(CPUProfileType)); 1588 1563 return header; 1589 1564 } -
trunk/WebCore/inspector/InspectorController.h
r64540 r64642 319 319 void getProfileHeaders(long callId); 320 320 void getProfile(long callId, unsigned uid); 321 ScriptObjectcreateProfileHeader(const ScriptProfile& profile);321 PassRefPtr<InspectorObject> createProfileHeader(const ScriptProfile& profile); 322 322 #endif 323 323 #if ENABLE(DATABASE) -
trunk/WebCore/inspector/InspectorFrontend.cpp
r64547 r64642 311 311 } 312 312 313 void InspectorFrontend::addProfileHeader(const ScriptValue& profile)314 {315 ScriptFunctionCall function(m_webInspector, "dispatch");316 function.appendArgument("addProfileHeader");317 function.appendArgument(profile);318 function.call();319 }320 321 313 void InspectorFrontend::setRecordingProfile(bool isProfiling) 322 314 { … … 324 316 function.appendArgument("setRecordingProfile"); 325 317 function.appendArgument(isProfiling); 326 function.call();327 }328 329 void InspectorFrontend::didGetProfileHeaders(long callId, const ScriptArray& headers)330 {331 ScriptFunctionCall function(m_webInspector, "dispatch");332 function.appendArgument("didGetProfileHeaders");333 function.appendArgument(callId);334 function.appendArgument(headers);335 318 function.call(); 336 319 } -
trunk/WebCore/inspector/InspectorFrontend.h
r64547 r64642 103 103 void profilerWasEnabled(); 104 104 void profilerWasDisabled(); 105 void addProfileHeader(const ScriptValue& profile);106 105 void setRecordingProfile(bool isProfiling); 107 void didGetProfileHeaders(long callId, const ScriptArray& headers);108 106 void didGetProfile(long callId, const ScriptValue& profile); 109 107 #endif
Note: See TracChangeset
for help on using the changeset viewer.