Title: [117466] trunk/Source/WebCore
Revision
117466
Author
e...@google.com
Date
2012-05-17 11:22:38 -0700 (Thu, 17 May 2012)

Log Message

Insert source file and line number for v8 function calls into tracing
https://bugs.webkit.org/show_bug.cgi?id=84613

Reviewed by Kentaro Hara.

The trace for v8 function calls doesn't include any information about
what function is being called. Pass this information along so it can
be less opaque.

* bindings/v8/V8Proxy.cpp:
(WebCore::resourceInfo):
(WebCore):
(WebCore::resourceString):
(WebCore::V8Proxy::instrumentedCallFunction):
* platform/chromium/TraceEvent.h:
(WebCore::TraceEvent::TraceStringWithCopy::TraceStringWithCopy):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (117465 => 117466)


--- trunk/Source/WebCore/ChangeLog	2012-05-17 18:21:02 UTC (rev 117465)
+++ trunk/Source/WebCore/ChangeLog	2012-05-17 18:22:38 UTC (rev 117466)
@@ -1,3 +1,22 @@
+2012-05-17  Adrienne Walker  <e...@google.com>
+
+        Insert source file and line number for v8 function calls into tracing
+        https://bugs.webkit.org/show_bug.cgi?id=84613
+
+        Reviewed by Kentaro Hara.
+
+        The trace for v8 function calls doesn't include any information about
+        what function is being called. Pass this information along so it can
+        be less opaque.
+
+        * bindings/v8/V8Proxy.cpp:
+        (WebCore::resourceInfo):
+        (WebCore):
+        (WebCore::resourceString):
+        (WebCore::V8Proxy::instrumentedCallFunction):
+        * platform/chromium/TraceEvent.h:
+        (WebCore::TraceEvent::TraceStringWithCopy::TraceStringWithCopy):
+
 2012-05-17  Caio Marcelo de Oliveira Filho  <caio.olive...@openbossa.org>
 
         [Qt] REGRESSION(101967): It made editing/style/iframe-onload-crash-mac.html timeout

Modified: trunk/Source/WebCore/bindings/v8/V8Proxy.cpp (117465 => 117466)


--- trunk/Source/WebCore/bindings/v8/V8Proxy.cpp	2012-05-17 18:21:02 UTC (rev 117465)
+++ trunk/Source/WebCore/bindings/v8/V8Proxy.cpp	2012-05-17 18:22:38 UTC (rev 117466)
@@ -69,6 +69,7 @@
 #include <wtf/StdLibExtras.h>
 #include <wtf/StringExtras.h>
 #include <wtf/UnusedParam.h>
+#include <wtf/text/StringBuilder.h>
 #include <wtf/text/WTFString.h>
 
 #if PLATFORM(CHROMIUM)
@@ -387,6 +388,31 @@
     return V8Proxy::instrumentedCallFunction(frame(), function, receiver, argc, args);
 }
 
+static inline void resourceInfo(const v8::Handle<v8::Function> function, String& resourceName, int& lineNumber)
+{
+    v8::ScriptOrigin origin = function->GetScriptOrigin();
+    if (origin.ResourceName().IsEmpty()) {
+        resourceName = "undefined";
+        lineNumber = 1;
+    } else {
+        resourceName = toWebCoreString(origin.ResourceName());
+        lineNumber = function->GetScriptLineNumber() + 1;
+    }
+}
+
+static inline String resourceString(const v8::Handle<v8::Function> function)
+{
+    String resourceName;
+    int lineNumber;
+    resourceInfo(function, resourceName, lineNumber);
+
+    StringBuilder builder;
+    builder.append(resourceName);
+    builder.append(':');
+    builder.append(String::number(lineNumber));
+    return builder.toString();
+}
+
 v8::Local<v8::Value> V8Proxy::instrumentedCallFunction(Frame* frame, v8::Handle<v8::Function> function, v8::Handle<v8::Object> receiver, int argc, v8::Handle<v8::Value> args[])
 {
     V8GCController::checkMemoryUsage();
@@ -398,20 +424,16 @@
 
     InspectorInstrumentationCookie cookie;
     if (InspectorInstrumentation::hasFrontends() && context) {
-        String resourceName("undefined");
-        int lineNumber = 1;
-        v8::ScriptOrigin origin = function->GetScriptOrigin();
-        if (!origin.ResourceName().IsEmpty()) {
-            resourceName = toWebCoreString(origin.ResourceName());
-            lineNumber = function->GetScriptLineNumber() + 1;
-        }
+        String resourceName;
+        int lineNumber;
+        resourceInfo(function, resourceName, lineNumber);
         cookie = InspectorInstrumentation::willCallFunction(context, resourceName, lineNumber);
     }
 
     v8::Local<v8::Value> result;
     {
 #if PLATFORM(CHROMIUM)
-        TRACE_EVENT0("v8", "v8.callFunction");
+        TRACE_EVENT1("v8", "v8.callFunction", "callsite", resourceString(function).utf8());
 #endif
         V8RecursionScope recursionScope(context);
         result = function->Call(receiver, argc, args);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to