<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[163140] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/163140">163140</a></dd>
<dt>Author</dt> <dd>timothy@apple.com</dd>
<dt>Date</dt> <dd>2014-01-30 17:34:54 -0800 (Thu, 30 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add column number and call timing support to LegacyProfiler.

https://bugs.webkit.org/show_bug.cgi?id=127764

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* interpreter/Interpreter.cpp:
(JSC::Interpreter::execute):
* profiler/CallIdentifier.h:
(JSC::CallIdentifier::CallIdentifier):
(JSC::CallIdentifier::functionName):
(JSC::CallIdentifier::url):
(JSC::CallIdentifier::lineNumber):
(JSC::CallIdentifier::columnNumber):
(JSC::CallIdentifier::operator==):
(JSC::CallIdentifier::operator!=):
(JSC::CallIdentifier::Hash::hash):
(WTF::HashTraits&lt;JSC::CallIdentifier&gt;::constructDeletedValue):
(WTF::HashTraits&lt;JSC::CallIdentifier&gt;::isDeletedValue):
* profiler/LegacyProfiler.cpp:
(JSC::LegacyProfiler::willExecute):
(JSC::LegacyProfiler::didExecute):
(JSC::LegacyProfiler::exceptionUnwind):
(JSC::LegacyProfiler::createCallIdentifier):
(JSC::createCallIdentifierFromFunctionImp):
* profiler/LegacyProfiler.h:
* profiler/Profile.cpp:
(JSC::Profile::Profile):
* profiler/Profile.h:
(JSC::Profile::uid):
(JSC::Profile::idleTime):
(JSC::Profile::setIdleTime):
* profiler/ProfileGenerator.cpp:
(JSC::AddParentForConsoleStartFunctor::operator()):
(JSC::ProfileGenerator::addParentForConsoleStart):
(JSC::ProfileGenerator::willExecute):
(JSC::ProfileGenerator::didExecute):
(JSC::ProfileGenerator::stopProfiling):
(JSC::ProfileGenerator::removeProfileStart):
(JSC::ProfileGenerator::removeProfileEnd):
* profiler/ProfileNode.cpp:
(JSC::ProfileNode::ProfileNode):
(JSC::ProfileNode::stopProfiling):
(JSC::ProfileNode::endAndRecordCall):
(JSC::ProfileNode::startTimer):
(JSC::ProfileNode::debugPrintData):
* profiler/ProfileNode.h:
(JSC::ProfileNode::Call::Call):
(JSC::ProfileNode::Call::startTime):
(JSC::ProfileNode::Call::setStartTime):
(JSC::ProfileNode::Call::totalTime):
(JSC::ProfileNode::Call::setTotalTime):
(JSC::ProfileNode::id):
(JSC::ProfileNode::functionName):
(JSC::ProfileNode::url):
(JSC::ProfileNode::lineNumber):
(JSC::ProfileNode::columnNumber):
(JSC::ProfileNode::calls):
(JSC::ProfileNode::lastCall):
(JSC::ProfileNode::numberOfCalls):

Source/WebCore:

* bindings/js/ScriptProfile.cpp:
(WebCore::ScriptProfile::idleTime):
(WebCore::buildInspectorObjectFor):
(WebCore::ScriptProfile::buildInspectorObject):
* bindings/js/ScriptProfile.h:
* inspector/InspectorHeapProfilerAgent.cpp:
(WebCore::InspectorHeapProfilerAgent::createSnapshotHeader):
* inspector/InspectorProfilerAgent.cpp:
(WebCore::InspectorProfilerAgent::createSnapshotHeader):
(WebCore::InspectorProfilerAgent::getCPUProfile):
* inspector/ScriptProfileNode.idl:
* inspector/TimelineRecordFactory.cpp:
(WebCore::TimelineRecordFactory::appendProfile):
* inspector/protocol/Profiler.json:

LayoutTests:

Update test and results to include column numbers.

* fast/profiler/anonymous-event-handler-expected.txt:
* fast/profiler/anonymous-function-called-from-different-contexts-expected.txt:
* fast/profiler/anonymous-function-calls-built-in-functions-expected.txt:
* fast/profiler/anonymous-function-calls-eval-expected.txt:
* fast/profiler/anonymous-functions-with-display-names-expected.txt:
* fast/profiler/apply-expected.txt:
* fast/profiler/built-in-function-calls-anonymous-expected.txt:
* fast/profiler/built-in-function-calls-user-defined-function-expected.txt:
* fast/profiler/call-expected.txt:
* fast/profiler/calling-the-function-that-started-the-profiler-from-another-scope-expected.txt:
* fast/profiler/compare-multiple-profiles-expected.txt:
* fast/profiler/constructor-expected.txt:
* fast/profiler/dead-time-expected.txt:
* fast/profiler/document-dot-write-expected.txt:
* fast/profiler/event-handler-expected.txt:
* fast/profiler/execution-context-and-eval-on-same-line-expected.txt:
* fast/profiler/inline-event-handler-expected.txt:
* fast/profiler/many-calls-in-the-same-scope-expected.txt:
* fast/profiler/multiple-and-different-scoped-anonymous-function-calls-expected.txt:
* fast/profiler/multiple-and-different-scoped-function-calls-expected.txt:
* fast/profiler/multiple-anonymous-functions-called-from-the-same-function-expected.txt:
* fast/profiler/multiple-frames-expected.txt:
* fast/profiler/named-functions-with-display-names-expected.txt:
* fast/profiler/nested-anonymous-functon-expected.txt:
* fast/profiler/nested-start-and-stop-profiler-expected.txt:
* fast/profiler/one-execution-context-expected.txt:
* fast/profiler/profile-calls-in-included-file-expected.txt:
* fast/profiler/profile-with-no-title-expected.txt:
* fast/profiler/profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting-expected.txt:
* fast/profiler/profiling-from-a-nested-location-expected.txt:
* fast/profiler/resources/profiler-test-JS-resources.js:
(printProfileNodeWithoutTime):
* fast/profiler/simple-event-call-expected.txt:
* fast/profiler/simple-no-level-change-expected.txt:
* fast/profiler/start-and-stop-profiler-multiple-times-expected.txt:
* fast/profiler/start-and-stop-profiling-in-the-same-function-expected.txt:
* fast/profiler/stop-profiling-after-setTimeout-expected.txt:
* fast/profiler/stop-then-function-call-expected.txt:
* fast/profiler/two-execution-contexts-expected.txt:
* fast/profiler/user-defined-function-calls-built-in-functions-expected.txt:
* fast/profiler/window-dot-eval-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastprofileranonymouseventhandlerexpectedtxt">trunk/LayoutTests/fast/profiler/anonymous-event-handler-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofileranonymousfunctioncalledfromdifferentcontextsexpectedtxt">trunk/LayoutTests/fast/profiler/anonymous-function-called-from-different-contexts-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofileranonymousfunctioncallsbuiltinfunctionsexpectedtxt">trunk/LayoutTests/fast/profiler/anonymous-function-calls-built-in-functions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofileranonymousfunctioncallsevalexpectedtxt">trunk/LayoutTests/fast/profiler/anonymous-function-calls-eval-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofileranonymousfunctionswithdisplaynamesexpectedtxt">trunk/LayoutTests/fast/profiler/anonymous-functions-with-display-names-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerapplyexpectedtxt">trunk/LayoutTests/fast/profiler/apply-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerbuiltinfunctioncallsanonymousexpectedtxt">trunk/LayoutTests/fast/profiler/built-in-function-calls-anonymous-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerbuiltinfunctioncallsuserdefinedfunctionexpectedtxt">trunk/LayoutTests/fast/profiler/built-in-function-calls-user-defined-function-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilercallexpectedtxt">trunk/LayoutTests/fast/profiler/call-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilercallingthefunctionthatstartedtheprofilerfromanotherscopeexpectedtxt">trunk/LayoutTests/fast/profiler/calling-the-function-that-started-the-profiler-from-another-scope-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilercomparemultipleprofilesexpectedtxt">trunk/LayoutTests/fast/profiler/compare-multiple-profiles-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerconstructorexpectedtxt">trunk/LayoutTests/fast/profiler/constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerdeadtimeexpectedtxt">trunk/LayoutTests/fast/profiler/dead-time-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerdocumentdotwriteexpectedtxt">trunk/LayoutTests/fast/profiler/document-dot-write-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilereventhandlerexpectedtxt">trunk/LayoutTests/fast/profiler/event-handler-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerexecutioncontextandevalonsamelineexpectedtxt">trunk/LayoutTests/fast/profiler/execution-context-and-eval-on-same-line-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerinlineeventhandlerexpectedtxt">trunk/LayoutTests/fast/profiler/inline-event-handler-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilermanycallsinthesamescopeexpectedtxt">trunk/LayoutTests/fast/profiler/many-calls-in-the-same-scope-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilermultipleanddifferentscopedanonymousfunctioncallsexpectedtxt">trunk/LayoutTests/fast/profiler/multiple-and-different-scoped-anonymous-function-calls-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilermultipleanddifferentscopedfunctioncallsexpectedtxt">trunk/LayoutTests/fast/profiler/multiple-and-different-scoped-function-calls-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilermultipleanonymousfunctionscalledfromthesamefunctionexpectedtxt">trunk/LayoutTests/fast/profiler/multiple-anonymous-functions-called-from-the-same-function-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilermultipleframesexpectedtxt">trunk/LayoutTests/fast/profiler/multiple-frames-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilernamedfunctionswithdisplaynamesexpectedtxt">trunk/LayoutTests/fast/profiler/named-functions-with-display-names-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilernestedanonymousfunctonexpectedtxt">trunk/LayoutTests/fast/profiler/nested-anonymous-functon-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilernestedstartandstopprofilerexpectedtxt">trunk/LayoutTests/fast/profiler/nested-start-and-stop-profiler-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofileroneexecutioncontextexpectedtxt">trunk/LayoutTests/fast/profiler/one-execution-context-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerprofilecallsinincludedfileexpectedtxt">trunk/LayoutTests/fast/profiler/profile-calls-in-included-file-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerprofilewithnotitleexpectedtxt">trunk/LayoutTests/fast/profiler/profile-with-no-title-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerprofilingfromanestedlocationbutstopprofilingoutsidethenestingexpectedtxt">trunk/LayoutTests/fast/profiler/profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerprofilingfromanestedlocationexpectedtxt">trunk/LayoutTests/fast/profiler/profiling-from-a-nested-location-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerresourcesprofilertestJSresourcesjs">trunk/LayoutTests/fast/profiler/resources/profiler-test-JS-resources.js</a></li>
<li><a href="#trunkLayoutTestsfastprofilersimpleeventcallexpectedtxt">trunk/LayoutTests/fast/profiler/simple-event-call-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilersimplenolevelchangeexpectedtxt">trunk/LayoutTests/fast/profiler/simple-no-level-change-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerstartandstopprofilermultipletimesexpectedtxt">trunk/LayoutTests/fast/profiler/start-and-stop-profiler-multiple-times-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerstartandstopprofilinginthesamefunctionexpectedtxt">trunk/LayoutTests/fast/profiler/start-and-stop-profiling-in-the-same-function-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerstopprofilingaftersetTimeoutexpectedtxt">trunk/LayoutTests/fast/profiler/stop-profiling-after-setTimeout-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerstopthenfunctioncallexpectedtxt">trunk/LayoutTests/fast/profiler/stop-then-function-call-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilertwoexecutioncontextsexpectedtxt">trunk/LayoutTests/fast/profiler/two-execution-contexts-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofileruserdefinedfunctioncallsbuiltinfunctionsexpectedtxt">trunk/LayoutTests/fast/profiler/user-defined-function-calls-built-in-functions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastprofilerwindowdotevalexpectedtxt">trunk/LayoutTests/fast/profiler/window-dot-eval-expected.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterInterpretercpp">trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerCallIdentifierh">trunk/Source/JavaScriptCore/profiler/CallIdentifier.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerLegacyProfilercpp">trunk/Source/JavaScriptCore/profiler/LegacyProfiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerLegacyProfilerh">trunk/Source/JavaScriptCore/profiler/LegacyProfiler.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfilecpp">trunk/Source/JavaScriptCore/profiler/Profile.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfileh">trunk/Source/JavaScriptCore/profiler/Profile.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfileGeneratorcpp">trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfileGeneratorh">trunk/Source/JavaScriptCore/profiler/ProfileGenerator.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfileNodecpp">trunk/Source/JavaScriptCore/profiler/ProfileNode.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfileNodeh">trunk/Source/JavaScriptCore/profiler/ProfileNode.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptProfilecpp">trunk/Source/WebCore/bindings/js/ScriptProfile.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptProfileh">trunk/Source/WebCore/bindings/js/ScriptProfile.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorHeapProfilerAgentcpp">trunk/Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorProfilerAgentcpp">trunk/Source/WebCore/inspector/InspectorProfilerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorScriptProfileNodeidl">trunk/Source/WebCore/inspector/ScriptProfileNode.idl</a></li>
<li><a href="#trunkSourceWebCoreinspectorTimelineRecordFactorycpp">trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorprotocolProfilerjson">trunk/Source/WebCore/inspector/protocol/Profiler.json</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/ChangeLog        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,3 +1,55 @@
</span><ins>+2014-01-28  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Add column number and call timing support to LegacyProfiler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=127764
+
+        Reviewed by Joseph Pecoraro.
+
+        Update test and results to include column numbers.
+
+        * fast/profiler/anonymous-event-handler-expected.txt:
+        * fast/profiler/anonymous-function-called-from-different-contexts-expected.txt:
+        * fast/profiler/anonymous-function-calls-built-in-functions-expected.txt:
+        * fast/profiler/anonymous-function-calls-eval-expected.txt:
+        * fast/profiler/anonymous-functions-with-display-names-expected.txt:
+        * fast/profiler/apply-expected.txt:
+        * fast/profiler/built-in-function-calls-anonymous-expected.txt:
+        * fast/profiler/built-in-function-calls-user-defined-function-expected.txt:
+        * fast/profiler/call-expected.txt:
+        * fast/profiler/calling-the-function-that-started-the-profiler-from-another-scope-expected.txt:
+        * fast/profiler/compare-multiple-profiles-expected.txt:
+        * fast/profiler/constructor-expected.txt:
+        * fast/profiler/dead-time-expected.txt:
+        * fast/profiler/document-dot-write-expected.txt:
+        * fast/profiler/event-handler-expected.txt:
+        * fast/profiler/execution-context-and-eval-on-same-line-expected.txt:
+        * fast/profiler/inline-event-handler-expected.txt:
+        * fast/profiler/many-calls-in-the-same-scope-expected.txt:
+        * fast/profiler/multiple-and-different-scoped-anonymous-function-calls-expected.txt:
+        * fast/profiler/multiple-and-different-scoped-function-calls-expected.txt:
+        * fast/profiler/multiple-anonymous-functions-called-from-the-same-function-expected.txt:
+        * fast/profiler/multiple-frames-expected.txt:
+        * fast/profiler/named-functions-with-display-names-expected.txt:
+        * fast/profiler/nested-anonymous-functon-expected.txt:
+        * fast/profiler/nested-start-and-stop-profiler-expected.txt:
+        * fast/profiler/one-execution-context-expected.txt:
+        * fast/profiler/profile-calls-in-included-file-expected.txt:
+        * fast/profiler/profile-with-no-title-expected.txt:
+        * fast/profiler/profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting-expected.txt:
+        * fast/profiler/profiling-from-a-nested-location-expected.txt:
+        * fast/profiler/resources/profiler-test-JS-resources.js:
+        (printProfileNodeWithoutTime):
+        * fast/profiler/simple-event-call-expected.txt:
+        * fast/profiler/simple-no-level-change-expected.txt:
+        * fast/profiler/start-and-stop-profiler-multiple-times-expected.txt:
+        * fast/profiler/start-and-stop-profiling-in-the-same-function-expected.txt:
+        * fast/profiler/stop-profiling-after-setTimeout-expected.txt:
+        * fast/profiler/stop-then-function-call-expected.txt:
+        * fast/profiler/two-execution-contexts-expected.txt:
+        * fast/profiler/user-defined-function-calls-built-in-functions-expected.txt:
+        * fast/profiler/window-dot-eval-expected.txt:
+
</ins><span class="cx"> 2014-01-30  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         http/tests/security/cross-origin-plugin-private-browsing-toggled.html is flaky on WK2
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofileranonymouseventhandlerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/anonymous-event-handler-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/anonymous-event-handler-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/anonymous-event-handler-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,16 +3,16 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. It should show the anonymous function at the same level as the onload handler. 
</span><span class="cx"> 
</span><span class="cx"> Profile title: Anonymous event handler
</span><del>-Thread_1 (no file) (line 0)
-   startTest anonymous-event-handler.html (line 11)
-      getElementById (no file) (line 0)
-      click (no file) (line 0)
-         onclick anonymous-event-handler.html (line 15)
-            insertNewText profiler-test-JS-resources.js (line 17)
-               createElement (no file) (line 0)
-               createTextNode (no file) (line 0)
-               appendChild (no file) (line 0)
-               getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest anonymous-event-handler.html (line 11:1)
+      getElementById (no file) (line 0:0)
+      click (no file) (line 0:0)
+         onclick anonymous-event-handler.html (line 15:54)
+            insertNewText profiler-test-JS-resources.js (line 17:26)
+               createElement (no file) (line 0:0)
+               createTextNode (no file) (line 0:0)
+               appendChild (no file) (line 0:0)
+               getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofileranonymousfunctioncalledfromdifferentcontextsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/anonymous-function-called-from-different-contexts-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/anonymous-function-called-from-different-contexts-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/anonymous-function-called-from-different-contexts-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,22 +3,22 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. Beneath onload and startTest it should show three children, an anonymous function, script context, and the endTest call.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Same anonymous function called from different contexts
</span><del>-Thread_1 (no file) (line 0)
-   startTest anonymous-function-called-from-different-contexts.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      eval (no file) (line 0)
-         (program) (no file) (line 1)
-            anonymousFunction profiler-test-JS-resources.js (line 29)
-               insertNewText profiler-test-JS-resources.js (line 17)
-                  createElement (no file) (line 0)
-                  createTextNode (no file) (line 0)
-                  appendChild (no file) (line 0)
-                  getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest anonymous-function-called-from-different-contexts.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      eval (no file) (line 0:0)
+         (program) (no file) (line 1:1)
+            anonymousFunction profiler-test-JS-resources.js (line 29:37)
+               insertNewText profiler-test-JS-resources.js (line 17:26)
+                  createElement (no file) (line 0:0)
+                  createTextNode (no file) (line 0:0)
+                  appendChild (no file) (line 0:0)
+                  getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofileranonymousfunctioncallsbuiltinfunctionsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/anonymous-function-calls-built-in-functions-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/anonymous-function-calls-built-in-functions-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/anonymous-function-calls-built-in-functions-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,14 +3,14 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. Beneath onload and startTest it should show three children, an anonymous function, script context, and the endTest call.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Anonymous function calls built-in functions
</span><del>-Thread_1 (no file) (line 0)
-   startTest anonymous-function-calls-built-in-functions.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest anonymous-function-calls-built-in-functions.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofileranonymousfunctioncallsevalexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/anonymous-function-calls-eval-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/anonymous-function-calls-eval-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/anonymous-function-calls-eval-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,16 +3,16 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. Beneath onload and startTest it should show an (anonymous function) which has a (program) child.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Anonymous function calles eval
</span><del>-Thread_1 (no file) (line 0)
-   startTest anonymous-function-calls-eval.html (line 11)
-      variableThatPointsToAnAnonymousFunction anonymous-function-calls-eval.html (line 14)
-         eval (no file) (line 0)
-            (program) (no file) (line 1)
-               insertNewText profiler-test-JS-resources.js (line 17)
-                  createElement (no file) (line 0)
-                  createTextNode (no file) (line 0)
-                  appendChild (no file) (line 0)
-                  getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest anonymous-function-calls-eval.html (line 11:1)
+      variableThatPointsToAnAnonymousFunction anonymous-function-calls-eval.html (line 14:62)
+         eval (no file) (line 0:0)
+            (program) (no file) (line 1:1)
+               insertNewText profiler-test-JS-resources.js (line 17:26)
+                  createElement (no file) (line 0:0)
+                  createTextNode (no file) (line 0:0)
+                  appendChild (no file) (line 0:0)
+                  getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofileranonymousfunctionswithdisplaynamesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/anonymous-functions-with-display-names-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/anonymous-functions-with-display-names-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/anonymous-functions-with-display-names-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,14 +3,14 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. You should see functions named &quot;[x] iterations function&quot;, and no anonymous functions.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Anonymous functions with display names
</span><del>-Thread_1 (no file) (line 0)
-   startTest anonymous-functions-with-display-names.html (line 23)
-      anonymousFunctionGenerator anonymous-functions-with-display-names.html (line 11)
-      0 iterations function anonymous-functions-with-display-names.html (line 13)
-      1 iterations function anonymous-functions-with-display-names.html (line 13)
-      2 iterations function anonymous-functions-with-display-names.html (line 13)
-      20 iterations function anonymous-functions-with-display-names.html (line 13)
-      1000 iterations function anonymous-functions-with-display-names.html (line 13)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest anonymous-functions-with-display-names.html (line 23:1)
+      anonymousFunctionGenerator anonymous-functions-with-display-names.html (line 11:1)
+      0 iterations function anonymous-functions-with-display-names.html (line 13:5)
+      1 iterations function anonymous-functions-with-display-names.html (line 13:5)
+      2 iterations function anonymous-functions-with-display-names.html (line 13:5)
+      20 iterations function anonymous-functions-with-display-names.html (line 13:5)
+      1000 iterations function anonymous-functions-with-display-names.html (line 13:5)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerapplyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/apply-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/apply-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/apply-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,10 +3,10 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to fakeInteriorFunction() and a call to apply().
</span><span class="cx"> 
</span><span class="cx"> Profile title: Using the apply() method
</span><del>-Thread_1 (no file) (line 0)
-   startTest apply.html (line 11)
-      fakeObject apply.html (line 18)
-         fakeInteriorFunction apply.html (line 24)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest apply.html (line 11:1)
+      fakeObject apply.html (line 18:1)
+         fakeInteriorFunction apply.html (line 24:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerbuiltinfunctioncallsanonymousexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/built-in-function-calls-anonymous-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/built-in-function-calls-anonymous-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/built-in-function-calls-anonymous-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,12 +3,12 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile map() should be the sibling of an (anonymous function) which has arrayOperatorFunction() as a child.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Built-in function calls an anonymous function
</span><del>-Thread_1 (no file) (line 0)
-   startTest built-in-function-calls-anonymous.html (line 11)
-      Array (no file) (line 0)
-      map (no file) (line 0)
-         myFunction built-in-function-calls-anonymous.html (line 14)
-            arrayOperatorFunction profiler-test-JS-resources.js (line 25)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest built-in-function-calls-anonymous.html (line 11:1)
+      Array (no file) (line 0:0)
+      map (no file) (line 0:0)
+         myFunction built-in-function-calls-anonymous.html (line 14:45)
+            arrayOperatorFunction profiler-test-JS-resources.js (line 25:46)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerbuiltinfunctioncallsuserdefinedfunctionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/built-in-function-calls-user-defined-function-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/built-in-function-calls-user-defined-function-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/built-in-function-calls-user-defined-function-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,11 +3,11 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile map() should have arrayOperatorFunction() as a child.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Built-in function calls a user defined function
</span><del>-Thread_1 (no file) (line 0)
-   startTest built-in-function-calls-user-defined-function.html (line 11)
-      Array (no file) (line 0)
-      map (no file) (line 0)
-         arrayOperatorFunction profiler-test-JS-resources.js (line 25)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest built-in-function-calls-user-defined-function.html (line 11:1)
+      Array (no file) (line 0:0)
+      map (no file) (line 0:0)
+         arrayOperatorFunction profiler-test-JS-resources.js (line 25:46)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilercallexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/call-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/call-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/call-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,10 +3,10 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to fakeObject() with call() as its child and a fakeInteriorFunction() as call()'s child.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Using the call() method
</span><del>-Thread_1 (no file) (line 0)
-   startTest call.html (line 11)
-      fakeObject call.html (line 20)
-         fakeInteriorFunction call.html (line 26)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest call.html (line 11:1)
+      fakeObject call.html (line 20:1)
+         fakeInteriorFunction call.html (line 26:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilercallingthefunctionthatstartedtheprofilerfromanotherscopeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/calling-the-function-that-started-the-profiler-from-another-scope-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/calling-the-function-that-started-the-profiler-from-another-scope-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/calling-the-function-that-started-the-profiler-from-another-scope-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,10 +3,10 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profiler you should see a call to indirection() and functionWichStartsAndStopsTheProfiler()
</span><span class="cx"> 
</span><span class="cx"> Profile title: Calling the same function where the profile started from another function
</span><del>-Thread_1 (no file) (line 0)
-   indirection calling-the-function-that-started-the-profiler-from-another-scope.html (line 18)
-      functionWichStartsAndStopsTheProfiler calling-the-function-that-started-the-profiler-from-another-scope.html (line 24)
-   functionWichStartsAndStopsTheProfiler calling-the-function-that-started-the-profiler-from-another-scope.html (line 24)
-   endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   indirection calling-the-function-that-started-the-profiler-from-another-scope.html (line 18:1)
+      functionWichStartsAndStopsTheProfiler calling-the-function-that-started-the-profiler-from-another-scope.html (line 24:1)
+   functionWichStartsAndStopsTheProfiler calling-the-function-that-started-the-profiler-from-another-scope.html (line 24:1)
+   endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilercomparemultipleprofilesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/compare-multiple-profiles-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/compare-multiple-profiles-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/compare-multiple-profiles-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,15 +3,15 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. It should not crash or hang and there should be multiple runs of the same named profile.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Test
</span><del>-Thread_1 (no file) (line 0)
-   startTest compare-multiple-profiles.html (line 23)
-      test compare-multiple-profiles.html (line 11)
-         test2 compare-multiple-profiles.html (line 17)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest compare-multiple-profiles.html (line 23:1)
+      test compare-multiple-profiles.html (line 11:20)
+         test2 compare-multiple-profiles.html (line 17:21)
</ins><span class="cx"> 
</span><span class="cx"> Profile title: Test
</span><del>-Thread_1 (no file) (line 0)
-   startTest compare-multiple-profiles.html (line 23)
-      test compare-multiple-profiles.html (line 11)
-         test2 compare-multiple-profiles.html (line 17)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest compare-multiple-profiles.html (line 23:1)
+      test compare-multiple-profiles.html (line 11:20)
+         test2 compare-multiple-profiles.html (line 17:21)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerconstructorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/constructor-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/constructor-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/constructor-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,10 +3,10 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to fakeObject() and Array() in it.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Using a constructor.
</span><del>-Thread_1 (no file) (line 0)
-   startTest constructor.html (line 11)
-      fakeObject constructor.html (line 20)
-         Array (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest constructor.html (line 11:1)
+      fakeObject constructor.html (line 20:1)
+         Array (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerdeadtimeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/dead-time-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/dead-time-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/dead-time-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,11 +3,11 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a large amount of the % spent in (non-JavaScript).
</span><span class="cx"> 
</span><span class="cx"> Profile title: Dead time in profile.
</span><del>-Thread_1 (no file) (line 0)
-   onload dead-time.html (line 21)
-      startTest dead-time.html (line 13)
-         setTimeout (no file) (line 0)
-   (program) dead-time.html (line 1)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   onload dead-time.html (line 21:1)
+      startTest dead-time.html (line 13:1)
+         setTimeout (no file) (line 0:0)
+   (program) dead-time.html (line 1:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerdocumentdotwriteexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/document-dot-write-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/document-dot-write-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/document-dot-write-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,8 +1,8 @@
</span><span class="cx"> 
</span><span class="cx"> Profile title: Call Document.write()
</span><del>-Thread_1 (no file) (line 0)
-   startTest document-dot-write.html (line 11)
-      write (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest document-dot-write.html (line 11:1)
+      write (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilereventhandlerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/event-handler-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/event-handler-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/event-handler-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,16 +3,16 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile insertnewText() should be a sibling to onload(). 
</span><span class="cx"> 
</span><span class="cx"> Profile title: Event handler
</span><del>-Thread_1 (no file) (line 0)
-   startTest event-handler.html (line 11)
-      getElementById (no file) (line 0)
-      addEventListener (no file) (line 0)
-      click (no file) (line 0)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest event-handler.html (line 11:1)
+      getElementById (no file) (line 0:0)
+      addEventListener (no file) (line 0:0)
+      click (no file) (line 0:0)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerexecutioncontextandevalonsamelineexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/execution-context-and-eval-on-same-line-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/execution-context-and-eval-on-same-line-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/execution-context-and-eval-on-same-line-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,14 +3,14 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be multiple (program) elements and one that represents the eval().
</span><span class="cx"> 
</span><span class="cx"> Profile title: Two Execution Contexts on the same line
</span><del>-Thread_1 (no file) (line 0)
-   startTest execution-context-and-eval-on-same-line.html (line 11)
-      evalFunction (no file) (line 1)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest execution-context-and-eval-on-same-line.html (line 11:1)
+      evalFunction (no file) (line 1:25)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerinlineeventhandlerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/inline-event-handler-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/inline-event-handler-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/inline-event-handler-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,18 +3,18 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile onclick() should be a sibling to onload() and onclick() should have eventListener() as a child. 
</span><span class="cx"> 
</span><span class="cx"> Profile title: Inline event handler
</span><del>-Thread_1 (no file) (line 0)
-   startTest inline-event-handler.html (line 11)
-      getElementById (no file) (line 0)
-      click (no file) (line 0)
-         onclick inline-event-handler.html (line 31)
-            eventListener inline-event-handler.html (line 17)
-               anonymousFunction profiler-test-JS-resources.js (line 29)
-                  insertNewText profiler-test-JS-resources.js (line 17)
-                     createElement (no file) (line 0)
-                     createTextNode (no file) (line 0)
-                     appendChild (no file) (line 0)
-                     getElementById (no file) (line 0)
-               endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest inline-event-handler.html (line 11:1)
+      getElementById (no file) (line 0:0)
+      click (no file) (line 0:0)
+         onclick inline-event-handler.html (line 31:1)
+            eventListener inline-event-handler.html (line 17:26)
+               anonymousFunction profiler-test-JS-resources.js (line 29:37)
+                  insertNewText profiler-test-JS-resources.js (line 17:26)
+                     createElement (no file) (line 0:0)
+                     createTextNode (no file) (line 0:0)
+                     appendChild (no file) (line 0:0)
+                     getElementById (no file) (line 0:0)
+               endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilermanycallsinthesamescopeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/many-calls-in-the-same-scope-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/many-calls-in-the-same-scope-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/many-calls-in-the-same-scope-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,34 +3,34 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile many functions should be the children of startTest. Use the sorting capabilites to make sure the similarly named functions are sorted correctly.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Many Calls In The Same Scope
</span><del>-Thread_1 (no file) (line 0)
-   startTest many-calls-in-the-same-scope.html (line 11)
-      insertNewText profiler-test-JS-resources.js (line 17)
-         createElement (no file) (line 0)
-         createTextNode (no file) (line 0)
-         appendChild (no file) (line 0)
-         getElementById (no file) (line 0)
-      insertGivenText profiler-test-JS-resources.js (line 9)
-         createElement (no file) (line 0)
-         createTextNode (no file) (line 0)
-         appendChild (no file) (line 0)
-         getElementById (no file) (line 0)
-      arrayOperatorFunction profiler-test-JS-resources.js (line 25)
-      intermediaryFunction profiler-test-JS-resources.js (line 33)
-         anonymousFunction profiler-test-JS-resources.js (line 29)
-            insertNewText profiler-test-JS-resources.js (line 17)
-               createElement (no file) (line 0)
-               createTextNode (no file) (line 0)
-               appendChild (no file) (line 0)
-               getElementById (no file) (line 0)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      end many-calls-in-the-same-scope.html (line 27)
-      endT many-calls-in-the-same-scope.html (line 32)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest many-calls-in-the-same-scope.html (line 11:1)
+      insertNewText profiler-test-JS-resources.js (line 17:26)
+         createElement (no file) (line 0:0)
+         createTextNode (no file) (line 0:0)
+         appendChild (no file) (line 0:0)
+         getElementById (no file) (line 0:0)
+      insertGivenText profiler-test-JS-resources.js (line 9:32)
+         createElement (no file) (line 0:0)
+         createTextNode (no file) (line 0:0)
+         appendChild (no file) (line 0:0)
+         getElementById (no file) (line 0:0)
+      arrayOperatorFunction profiler-test-JS-resources.js (line 25:46)
+      intermediaryFunction profiler-test-JS-resources.js (line 33:1)
+         anonymousFunction profiler-test-JS-resources.js (line 29:37)
+            insertNewText profiler-test-JS-resources.js (line 17:26)
+               createElement (no file) (line 0:0)
+               createTextNode (no file) (line 0:0)
+               appendChild (no file) (line 0:0)
+               getElementById (no file) (line 0:0)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      end many-calls-in-the-same-scope.html (line 27:1)
+      endT many-calls-in-the-same-scope.html (line 32:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilermultipleanddifferentscopedanonymousfunctioncallsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/multiple-and-different-scoped-anonymous-function-calls-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/multiple-and-different-scoped-anonymous-function-calls-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/multiple-and-different-scoped-anonymous-function-calls-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,21 +3,21 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to fakeObject with fakeInteriorFunction as its child, but call() should not be shown.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Multiple and different scoped calls to the same anonymous function
</span><del>-Thread_1 (no file) (line 0)
-   startTest multiple-and-different-scoped-anonymous-function-calls.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      intermediaryFunction profiler-test-JS-resources.js (line 33)
-         anonymousFunction profiler-test-JS-resources.js (line 29)
-            insertNewText profiler-test-JS-resources.js (line 17)
-               createElement (no file) (line 0)
-               createTextNode (no file) (line 0)
-               appendChild (no file) (line 0)
-               getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest multiple-and-different-scoped-anonymous-function-calls.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      intermediaryFunction profiler-test-JS-resources.js (line 33:1)
+         anonymousFunction profiler-test-JS-resources.js (line 29:37)
+            insertNewText profiler-test-JS-resources.js (line 17:26)
+               createElement (no file) (line 0:0)
+               createTextNode (no file) (line 0:0)
+               appendChild (no file) (line 0:0)
+               getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilermultipleanddifferentscopedfunctioncallsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/multiple-and-different-scoped-function-calls-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/multiple-and-different-scoped-function-calls-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/multiple-and-different-scoped-function-calls-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,20 +3,20 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be two calls to insertNewText under startTest() and one under an (anonymous function) under intermediaryFunction().
</span><span class="cx"> 
</span><span class="cx"> Profile title: Multiple and different scoped calls to the same function
</span><del>-Thread_1 (no file) (line 0)
-   startTest multiple-and-different-scoped-function-calls.html (line 11)
-      insertNewText profiler-test-JS-resources.js (line 17)
-         createElement (no file) (line 0)
-         createTextNode (no file) (line 0)
-         appendChild (no file) (line 0)
-         getElementById (no file) (line 0)
-      intermediaryFunction profiler-test-JS-resources.js (line 33)
-         anonymousFunction profiler-test-JS-resources.js (line 29)
-            insertNewText profiler-test-JS-resources.js (line 17)
-               createElement (no file) (line 0)
-               createTextNode (no file) (line 0)
-               appendChild (no file) (line 0)
-               getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest multiple-and-different-scoped-function-calls.html (line 11:1)
+      insertNewText profiler-test-JS-resources.js (line 17:26)
+         createElement (no file) (line 0:0)
+         createTextNode (no file) (line 0:0)
+         appendChild (no file) (line 0:0)
+         getElementById (no file) (line 0:0)
+      intermediaryFunction profiler-test-JS-resources.js (line 33:1)
+         anonymousFunction profiler-test-JS-resources.js (line 29:37)
+            insertNewText profiler-test-JS-resources.js (line 17:26)
+               createElement (no file) (line 0:0)
+               createTextNode (no file) (line 0:0)
+               appendChild (no file) (line 0:0)
+               getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilermultipleanonymousfunctionscalledfromthesamefunctionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/multiple-anonymous-functions-called-from-the-same-function-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/multiple-anonymous-functions-called-from-the-same-function-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/multiple-anonymous-functions-called-from-the-same-function-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,20 +3,20 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call two entries named to (anonymous function), as opposed to one entry called twice.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Multiple calls to different anonymous functions
</span><del>-Thread_1 (no file) (line 0)
-   startTest multiple-anonymous-functions-called-from-the-same-function.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      anotherAnonymousFunction profiler-test-JS-resources.js (line 30)
-         insertGivenText profiler-test-JS-resources.js (line 9)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest multiple-anonymous-functions-called-from-the-same-function.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      anotherAnonymousFunction profiler-test-JS-resources.js (line 30:44)
+         insertGivenText profiler-test-JS-resources.js (line 9:32)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilermultipleframesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/multiple-frames-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/multiple-frames-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/multiple-frames-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,16 +3,16 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to functionInOtherFrame().
</span><span class="cx"> 
</span><span class="cx"> Profile title: Other window executing JavaScript
</span><del>-Thread_1 (no file) (line 0)
-   startTest multiple-frames.html (line 11)
-      getElementById (no file) (line 0)
-      functionInOtherFrame other-frame.html (line 4)
-         functionInParentFrame multiple-frames.html (line 21)
-      insertGivenText profiler-test-JS-resources.js (line 9)
-         createElement (no file) (line 0)
-         createTextNode (no file) (line 0)
-         appendChild (no file) (line 0)
-         getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest multiple-frames.html (line 11:1)
+      getElementById (no file) (line 0:0)
+      functionInOtherFrame other-frame.html (line 4:33)
+         functionInParentFrame multiple-frames.html (line 21:34)
+      insertGivenText profiler-test-JS-resources.js (line 9:32)
+         createElement (no file) (line 0:0)
+         createTextNode (no file) (line 0:0)
+         appendChild (no file) (line 0:0)
+         getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilernamedfunctionswithdisplaynamesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/named-functions-with-display-names-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/named-functions-with-display-names-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/named-functions-with-display-names-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,14 +3,14 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. You should see functions named &quot;[x] iteration[s] function&quot;, and not &quot;function[x]&quot;
</span><span class="cx"> 
</span><span class="cx"> Profile title: Named functions with display names
</span><del>-Thread_1 (no file) (line 0)
-   startTest named-functions-with-display-names.html (line 54)
-      0 iterations function named-functions-with-display-names.html (line 11)
-      1 iteration function named-functions-with-display-names.html (line 18)
-      2 iterations function named-functions-with-display-names.html (line 25)
-      20 iterations function named-functions-with-display-names.html (line 32)
-      1000 iterations function named-functions-with-display-names.html (line 39)
-      bogusDisplayNameFunction named-functions-with-display-names.html (line 47)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest named-functions-with-display-names.html (line 54:1)
+      0 iterations function named-functions-with-display-names.html (line 11:1)
+      1 iteration function named-functions-with-display-names.html (line 18:1)
+      2 iterations function named-functions-with-display-names.html (line 25:1)
+      20 iterations function named-functions-with-display-names.html (line 32:1)
+      1000 iterations function named-functions-with-display-names.html (line 39:1)
+      bogusDisplayNameFunction named-functions-with-display-names.html (line 47:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilernestedanonymousfunctonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/nested-anonymous-functon-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/nested-anonymous-functon-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/nested-anonymous-functon-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,15 +3,15 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be an (anonymous function) with a child (anonymous function).
</span><span class="cx"> 
</span><span class="cx"> Profile title: Nested anonymous functions called
</span><del>-Thread_1 (no file) (line 0)
-   startTest nested-anonymous-functon.html (line 11)
-      AnonymousFunctionWichCallsAnAnonymousFunction nested-anonymous-functon.html (line 14)
-         anonymousFunction profiler-test-JS-resources.js (line 29)
-            insertNewText profiler-test-JS-resources.js (line 17)
-               createElement (no file) (line 0)
-               createTextNode (no file) (line 0)
-               appendChild (no file) (line 0)
-               getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest nested-anonymous-functon.html (line 11:1)
+      AnonymousFunctionWichCallsAnAnonymousFunction nested-anonymous-functon.html (line 14:68)
+         anonymousFunction profiler-test-JS-resources.js (line 29:37)
+            insertNewText profiler-test-JS-resources.js (line 17:26)
+               createElement (no file) (line 0:0)
+               createTextNode (no file) (line 0:0)
+               appendChild (no file) (line 0:0)
+               getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilernestedstartandstopprofilerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/nested-start-and-stop-profiler-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/nested-start-and-stop-profiler-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/nested-start-and-stop-profiler-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,126 +3,126 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profiler there should be three profiles.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the third time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest nested-start-and-stop-profiler.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest nested-start-and-stop-profiler.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the third time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest nested-start-and-stop-profiler.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest nested-start-and-stop-profiler.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the second time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest nested-start-and-stop-profiler.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
-         profileEnd (no file) (line 0)
-         printProfilesDataWithoutTime profiler-test-JS-resources.js (line 63)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-               replace (no file) (line 0)
-               createTextNode (no file) (line 0)
-               appendChild (no file) (line 0)
-               children (no file) (line 0)
-               printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                  replace (no file) (line 0)
-                  createTextNode (no file) (line 0)
-                  appendChild (no file) (line 0)
-                  children (no file) (line 0)
-                  printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                     replace (no file) (line 0)
-                     createTextNode (no file) (line 0)
-                     appendChild (no file) (line 0)
-                     children (no file) (line 0)
-            getElementById (no file) (line 0)
-         notifyDone (no file) (line 0)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest nested-start-and-stop-profiler.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
+         profileEnd (no file) (line 0:0)
+         printProfilesDataWithoutTime profiler-test-JS-resources.js (line 63:1)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+               replace (no file) (line 0:0)
+               createTextNode (no file) (line 0:0)
+               appendChild (no file) (line 0:0)
+               children (no file) (line 0:0)
+               printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                  replace (no file) (line 0:0)
+                  createTextNode (no file) (line 0:0)
+                  appendChild (no file) (line 0:0)
+                  children (no file) (line 0:0)
+                  printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                     replace (no file) (line 0:0)
+                     createTextNode (no file) (line 0:0)
+                     appendChild (no file) (line 0:0)
+                     children (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+         notifyDone (no file) (line 0:0)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the third time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest nested-start-and-stop-profiler.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest nested-start-and-stop-profiler.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the second time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest nested-start-and-stop-profiler.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
-         profileEnd (no file) (line 0)
-         printProfilesDataWithoutTime profiler-test-JS-resources.js (line 63)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-               replace (no file) (line 0)
-               createTextNode (no file) (line 0)
-               appendChild (no file) (line 0)
-               children (no file) (line 0)
-               printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                  replace (no file) (line 0)
-                  createTextNode (no file) (line 0)
-                  appendChild (no file) (line 0)
-                  children (no file) (line 0)
-                  printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                     replace (no file) (line 0)
-                     createTextNode (no file) (line 0)
-                     appendChild (no file) (line 0)
-                     children (no file) (line 0)
-            getElementById (no file) (line 0)
-         notifyDone (no file) (line 0)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest nested-start-and-stop-profiler.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
+         profileEnd (no file) (line 0:0)
+         printProfilesDataWithoutTime profiler-test-JS-resources.js (line 63:1)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+               replace (no file) (line 0:0)
+               createTextNode (no file) (line 0:0)
+               appendChild (no file) (line 0:0)
+               children (no file) (line 0:0)
+               printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                  replace (no file) (line 0:0)
+                  createTextNode (no file) (line 0:0)
+                  appendChild (no file) (line 0:0)
+                  children (no file) (line 0:0)
+                  printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                     replace (no file) (line 0:0)
+                     createTextNode (no file) (line 0:0)
+                     appendChild (no file) (line 0:0)
+                     children (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+         notifyDone (no file) (line 0:0)
</ins><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the first time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest nested-start-and-stop-profiler.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
-         profileEnd (no file) (line 0)
-         printProfilesDataWithoutTime profiler-test-JS-resources.js (line 63)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-               replace (no file) (line 0)
-               createTextNode (no file) (line 0)
-               appendChild (no file) (line 0)
-               children (no file) (line 0)
-               printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                  replace (no file) (line 0)
-                  createTextNode (no file) (line 0)
-                  appendChild (no file) (line 0)
-                  children (no file) (line 0)
-                  printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                     replace (no file) (line 0)
-                     createTextNode (no file) (line 0)
-                     appendChild (no file) (line 0)
-                     children (no file) (line 0)
-                     printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                        replace (no file) (line 0)
-                        createTextNode (no file) (line 0)
-                        appendChild (no file) (line 0)
-                        children (no file) (line 0)
-                        printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                           replace (no file) (line 0)
-                           createTextNode (no file) (line 0)
-                           appendChild (no file) (line 0)
-                           children (no file) (line 0)
-                           printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                              replace (no file) (line 0)
-                              createTextNode (no file) (line 0)
-                              appendChild (no file) (line 0)
-                              children (no file) (line 0)
-                              printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                                 replace (no file) (line 0)
-                                 createTextNode (no file) (line 0)
-                                 appendChild (no file) (line 0)
-                                 children (no file) (line 0)
-                                 printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78)
-                                    replace (no file) (line 0)
-                                    createTextNode (no file) (line 0)
-                                    appendChild (no file) (line 0)
-                                    children (no file) (line 0)
-            getElementById (no file) (line 0)
-         notifyDone (no file) (line 0)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest nested-start-and-stop-profiler.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
+         profileEnd (no file) (line 0:0)
+         printProfilesDataWithoutTime profiler-test-JS-resources.js (line 63:1)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+               replace (no file) (line 0:0)
+               createTextNode (no file) (line 0:0)
+               appendChild (no file) (line 0:0)
+               children (no file) (line 0:0)
+               printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                  replace (no file) (line 0:0)
+                  createTextNode (no file) (line 0:0)
+                  appendChild (no file) (line 0:0)
+                  children (no file) (line 0:0)
+                  printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                     replace (no file) (line 0:0)
+                     createTextNode (no file) (line 0:0)
+                     appendChild (no file) (line 0:0)
+                     children (no file) (line 0:0)
+                     printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                        replace (no file) (line 0:0)
+                        createTextNode (no file) (line 0:0)
+                        appendChild (no file) (line 0:0)
+                        children (no file) (line 0:0)
+                        printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                           replace (no file) (line 0:0)
+                           createTextNode (no file) (line 0:0)
+                           appendChild (no file) (line 0:0)
+                           children (no file) (line 0:0)
+                           printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                              replace (no file) (line 0:0)
+                              createTextNode (no file) (line 0:0)
+                              appendChild (no file) (line 0:0)
+                              children (no file) (line 0:0)
+                              printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                                 replace (no file) (line 0:0)
+                                 createTextNode (no file) (line 0:0)
+                                 appendChild (no file) (line 0:0)
+                                 children (no file) (line 0:0)
+                                 printProfileNodeWithoutTime profiler-test-JS-resources.js (line 78:1)
+                                    replace (no file) (line 0:0)
+                                    createTextNode (no file) (line 0:0)
+                                    appendChild (no file) (line 0:0)
+                                    children (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+         notifyDone (no file) (line 0:0)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofileroneexecutioncontextexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/one-execution-context-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/one-execution-context-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/one-execution-context-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile.
</span><span class="cx"> 
</span><span class="cx"> Profile title: One Execution Context
</span><del>-Thread_1 (no file) (line 0)
-   startTest one-execution-context.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest one-execution-context.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerprofilecallsinincludedfileexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/profile-calls-in-included-file-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/profile-calls-in-included-file-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/profile-calls-in-included-file-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. If there is a profile that is sufficient for this test.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Profile call in included file
</span><del>-Thread_1 (no file) (line 0)
-   startProfile profiler-test-JS-resources.js (line 43)
-   endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startProfile profiler-test-JS-resources.js (line 43:1)
+   endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerprofilewithnotitleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/profile-with-no-title-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/profile-with-no-title-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/profile-with-no-title-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. If there is a profile that is sufficient for this test.
</span><span class="cx"> 
</span><span class="cx"> Profile title: org.webkit.profiles.user-initiated.1
</span><del>-Thread_1 (no file) (line 0)
-   startTest profile-with-no-title.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest profile-with-no-title.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerprofilingfromanestedlocationbutstopprofilingoutsidethenestingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to functionWichStartsAndStopsTheProfiler().
</span><span class="cx"> 
</span><span class="cx"> Profile title: Profiling From A Nested Location But Stop Profiling Outside The Nesting
</span><del>-Thread_1 (no file) (line 0)
-   functionWichStartsTheProfiler profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting.html (line 17)
-   endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   functionWichStartsTheProfiler profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting.html (line 17:1)
+   endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerprofilingfromanestedlocationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/profiling-from-a-nested-location-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/profiling-from-a-nested-location-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/profiling-from-a-nested-location-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to functionWichStartsAndStopsTheProfiler().
</span><span class="cx"> 
</span><span class="cx"> Profile title: Profiling From A Nested Location
</span><del>-Thread_1 (no file) (line 0)
-   functionWichStartsAndStopsTheProfiler profiling-from-a-nested-location.html (line 16)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   functionWichStartsAndStopsTheProfiler profiling-from-a-nested-location.html (line 16:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerresourcesprofilertestJSresourcesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/resources/profiler-test-JS-resources.js (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/resources/profiler-test-JS-resources.js        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/resources/profiler-test-JS-resources.js        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -76,9 +76,6 @@
</span><span class="cx"> 
</span><span class="cx"> function printProfileNodeWithoutTime(preElement, node, indentLevel)
</span><span class="cx"> {
</span><del>-    if (node.functionName == &quot;(idle)&quot;)
-        return;
-
</del><span class="cx">     var space = &quot;&quot;;
</span><span class="cx">     for (var i = 0; i &lt; indentLevel; ++i)
</span><span class="cx">         space += &quot;   &quot;
</span><span class="lines">@@ -89,7 +86,7 @@
</span><span class="cx">     if (!strippedURL)
</span><span class="cx">         strippedURL = &quot;(no file)&quot;;
</span><span class="cx"> 
</span><del>-    var line = space + node.functionName + &quot; &quot; + strippedURL + &quot; (line &quot; + node.lineNumber + &quot;)\n&quot;;
</del><ins>+    var line = space + node.functionName + &quot; &quot; + strippedURL + &quot; (line &quot; + node.lineNumber + &quot;:&quot; + node.columnNumber + &quot;)\n&quot;;
</ins><span class="cx">     preElement.appendChild(document.createTextNode(line));
</span><span class="cx"> 
</span><span class="cx">     var children = node.children();
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilersimpleeventcallexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/simple-event-call-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/simple-event-call-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/simple-event-call-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. There should be only one onload node.
</span><span class="cx"> 
</span><span class="cx"> Profile title: A simple profile test where an event happens.
</span><del>-Thread_1 (no file) (line 0)
-   startTest simple-event-call.html (line 11)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest simple-event-call.html (line 11:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilersimplenolevelchangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/simple-no-level-change-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/simple-no-level-change-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/simple-no-level-change-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. There should be no function calls between console.profile() and console.profileEnd().
</span><span class="cx"> 
</span><span class="cx"> Profile title: A simple profile test where no scope chagnes
</span><del>-Thread_1 (no file) (line 0)
-   functionWichStartsAndStopsTheProfiler simple-no-level-change.html (line 16)
-      getElementById (no file) (line 0)
</del><ins>+Thread_1 (no file) (line 0:0)
+   functionWichStartsAndStopsTheProfiler simple-no-level-change.html (line 16:1)
+      getElementById (no file) (line 0:0)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerstartandstopprofilermultipletimesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/start-and-stop-profiler-multiple-times-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/start-and-stop-profiler-multiple-times-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/start-and-stop-profiler-multiple-times-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,71 +3,71 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profiler there should be three profiles.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the first time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest start-and-stop-profiler-multiple-times.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest start-and-stop-profiler-multiple-times.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the first time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest start-and-stop-profiler-multiple-times.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest start-and-stop-profiler-multiple-times.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the second time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest start-and-stop-profiler-multiple-times.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest start-and-stop-profiler-multiple-times.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the first time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest start-and-stop-profiler-multiple-times.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest start-and-stop-profiler-multiple-times.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the second time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest start-and-stop-profiler-multiple-times.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest start-and-stop-profiler-multiple-times.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> Profile title: Start the profiler the third time.
</span><del>-Thread_1 (no file) (line 0)
-   startTest start-and-stop-profiler-multiple-times.html (line 11)
-      anonymousFunction profiler-test-JS-resources.js (line 29)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest start-and-stop-profiler-multiple-times.html (line 11:1)
+      anonymousFunction profiler-test-JS-resources.js (line 29:37)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerstartandstopprofilinginthesamefunctionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/start-and-stop-profiling-in-the-same-function-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/start-and-stop-profiling-in-the-same-function-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/start-and-stop-profiling-in-the-same-function-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to functionWichStopsTheProfiler().
</span><span class="cx"> 
</span><span class="cx"> Profile title: Profiling From A Nested Location
</span><del>-Thread_1 (no file) (line 0)
-   startTest start-and-stop-profiling-in-the-same-function.html (line 11)
-      functionWichStopsTheProfiler start-and-stop-profiling-in-the-same-function.html (line 18)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest start-and-stop-profiling-in-the-same-function.html (line 11:1)
+      functionWichStopsTheProfiler start-and-stop-profiling-in-the-same-function.html (line 18:1)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerstopprofilingaftersetTimeoutexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/stop-profiling-after-setTimeout-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/stop-profiling-after-setTimeout-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/stop-profiling-after-setTimeout-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,11 +3,11 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile endProfile() should not be a child of (program).
</span><span class="cx"> 
</span><span class="cx"> Profile title: Stop profiling from a timeout
</span><del>-Thread_1 (no file) (line 0)
-   onload stop-profiling-after-setTimeout.html (line 21)
-      startTest stop-profiling-after-setTimeout.html (line 13)
-         setTimeout (no file) (line 0)
-   (program) stop-profiling-after-setTimeout.html (line 1)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   onload stop-profiling-after-setTimeout.html (line 21:1)
+      startTest stop-profiling-after-setTimeout.html (line 13:1)
+         setTimeout (no file) (line 0:0)
+   (program) stop-profiling-after-setTimeout.html (line 1:1)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerstopthenfunctioncallexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/stop-then-function-call-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/stop-then-function-call-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/stop-then-function-call-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. There should be two nodes in the profile, a &quot;(program)&quot; node with one child that is &quot;test&quot;.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Test
</span><del>-Thread_1 (no file) (line 0)
-   (program) (no file) (line 1)
-      test stop-then-function-call.html (line 11)
</del><ins>+Thread_1 (no file) (line 0:0)
+   (program) (no file) (line 1:16)
+      test stop-then-function-call.html (line 11:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilertwoexecutioncontextsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/two-execution-contexts-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/two-execution-contexts-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/two-execution-contexts-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,9 +3,9 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be two (program) elements.
</span><span class="cx"> 
</span><span class="cx"> Profile title: Two Execution Contexts
</span><del>-Thread_1 (no file) (line 0)
-   startTest two-execution-contexts.html (line 11)
-      intermediaryFunction two-execution-contexts.html (line 18)
-         testEnd two-execution-contexts.html (line 33)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest two-execution-contexts.html (line 11:1)
+      intermediaryFunction two-execution-contexts.html (line 18:1)
+         testEnd two-execution-contexts.html (line 33:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofileruserdefinedfunctioncallsbuiltinfunctionsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/user-defined-function-calls-built-in-functions-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/user-defined-function-calls-built-in-functions-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/user-defined-function-calls-built-in-functions-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -5,12 +5,12 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Profile title: User defined function calles built-in functions
</span><del>-Thread_1 (no file) (line 0)
-   startTest user-defined-function-calls-built-in-functions.html (line 11)
-      createElement (no file) (line 0)
-      createTextNode (no file) (line 0)
-      appendChild (no file) (line 0)
-      getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest user-defined-function-calls-built-in-functions.html (line 11:1)
+      createElement (no file) (line 0:0)
+      createTextNode (no file) (line 0:0)
+      appendChild (no file) (line 0:0)
+      getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerwindowdotevalexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/window-dot-eval-expected.txt (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/window-dot-eval-expected.txt        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/LayoutTests/fast/profiler/window-dot-eval-expected.txt        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -3,14 +3,14 @@
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be a call to eval().
</span><span class="cx"> 
</span><span class="cx"> Profile title: Call window.eval()
</span><del>-Thread_1 (no file) (line 0)
-   startTest window-dot-eval.html (line 11)
-      evalFunction (no file) (line 1)
-         insertNewText profiler-test-JS-resources.js (line 17)
-            createElement (no file) (line 0)
-            createTextNode (no file) (line 0)
-            appendChild (no file) (line 0)
-            getElementById (no file) (line 0)
-      endTest profiler-test-JS-resources.js (line 1)
</del><ins>+Thread_1 (no file) (line 0:0)
+   startTest window-dot-eval.html (line 11:1)
+      evalFunction (no file) (line 1:25)
+         insertNewText profiler-test-JS-resources.js (line 17:26)
+            createElement (no file) (line 0:0)
+            createTextNode (no file) (line 0:0)
+            appendChild (no file) (line 0:0)
+            getElementById (no file) (line 0:0)
+      endTest profiler-test-JS-resources.js (line 1:20)
</ins><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,3 +1,66 @@
</span><ins>+2014-01-28  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Add column number and call timing support to LegacyProfiler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=127764
+
+        Reviewed by Joseph Pecoraro.
+
+        * interpreter/Interpreter.cpp:
+        (JSC::Interpreter::execute):
+        * profiler/CallIdentifier.h:
+        (JSC::CallIdentifier::CallIdentifier):
+        (JSC::CallIdentifier::functionName):
+        (JSC::CallIdentifier::url):
+        (JSC::CallIdentifier::lineNumber):
+        (JSC::CallIdentifier::columnNumber):
+        (JSC::CallIdentifier::operator==):
+        (JSC::CallIdentifier::operator!=):
+        (JSC::CallIdentifier::Hash::hash):
+        (WTF::HashTraits&lt;JSC::CallIdentifier&gt;::constructDeletedValue):
+        (WTF::HashTraits&lt;JSC::CallIdentifier&gt;::isDeletedValue):
+        * profiler/LegacyProfiler.cpp:
+        (JSC::LegacyProfiler::willExecute):
+        (JSC::LegacyProfiler::didExecute):
+        (JSC::LegacyProfiler::exceptionUnwind):
+        (JSC::LegacyProfiler::createCallIdentifier):
+        (JSC::createCallIdentifierFromFunctionImp):
+        * profiler/LegacyProfiler.h:
+        * profiler/Profile.cpp:
+        (JSC::Profile::Profile):
+        * profiler/Profile.h:
+        (JSC::Profile::uid):
+        (JSC::Profile::idleTime):
+        (JSC::Profile::setIdleTime):
+        * profiler/ProfileGenerator.cpp:
+        (JSC::AddParentForConsoleStartFunctor::operator()):
+        (JSC::ProfileGenerator::addParentForConsoleStart):
+        (JSC::ProfileGenerator::willExecute):
+        (JSC::ProfileGenerator::didExecute):
+        (JSC::ProfileGenerator::stopProfiling):
+        (JSC::ProfileGenerator::removeProfileStart):
+        (JSC::ProfileGenerator::removeProfileEnd):
+        * profiler/ProfileNode.cpp:
+        (JSC::ProfileNode::ProfileNode):
+        (JSC::ProfileNode::stopProfiling):
+        (JSC::ProfileNode::endAndRecordCall):
+        (JSC::ProfileNode::startTimer):
+        (JSC::ProfileNode::debugPrintData):
+        * profiler/ProfileNode.h:
+        (JSC::ProfileNode::Call::Call):
+        (JSC::ProfileNode::Call::startTime):
+        (JSC::ProfileNode::Call::setStartTime):
+        (JSC::ProfileNode::Call::totalTime):
+        (JSC::ProfileNode::Call::setTotalTime):
+        (JSC::ProfileNode::id):
+        (JSC::ProfileNode::functionName):
+        (JSC::ProfileNode::url):
+        (JSC::ProfileNode::lineNumber):
+        (JSC::ProfileNode::columnNumber):
+        (JSC::ProfileNode::calls):
+        (JSC::ProfileNode::lastCall):
+        (JSC::ProfileNode::numberOfCalls):
+
</ins><span class="cx"> 2014-01-26  Timothy Hatcher  &lt;timothy@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Include profile with FunctionCall and EvaluateScript Timeline records.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterInterpretercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008, 2009, 2010, 2012, 2013, 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2008 Cameron Zwarich &lt;cwzwarich@uwaterloo.ca&gt;
</span><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -890,7 +890,7 @@
</span><span class="cx">     protoCallFrame.init(codeBlock, scope, 0, thisObj, 1);
</span><span class="cx"> 
</span><span class="cx">     if (LegacyProfiler* profiler = vm.enabledProfiler())
</span><del>-        profiler-&gt;willExecute(callFrame, program-&gt;sourceURL(), program-&gt;lineNo());
</del><ins>+        profiler-&gt;willExecute(callFrame, program-&gt;sourceURL(), program-&gt;lineNo(), program-&gt;startColumn());
</ins><span class="cx"> 
</span><span class="cx">     // Execute the code:
</span><span class="cx">     JSValue result;
</span><span class="lines">@@ -902,7 +902,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (LegacyProfiler* profiler = vm.enabledProfiler())
</span><del>-        profiler-&gt;didExecute(callFrame, program-&gt;sourceURL(), program-&gt;lineNo());
</del><ins>+        profiler-&gt;didExecute(callFrame, program-&gt;sourceURL(), program-&gt;lineNo(), program-&gt;startColumn());
</ins><span class="cx"> 
</span><span class="cx">     return checkedReturn(result);
</span><span class="cx"> }
</span><span class="lines">@@ -1169,7 +1169,7 @@
</span><span class="cx">     protoCallFrame.init(codeBlock, scope, 0, thisValue, 1);
</span><span class="cx"> 
</span><span class="cx">     if (LegacyProfiler* profiler = vm.enabledProfiler())
</span><del>-        profiler-&gt;willExecute(callFrame, eval-&gt;sourceURL(), eval-&gt;lineNo());
</del><ins>+        profiler-&gt;willExecute(callFrame, eval-&gt;sourceURL(), eval-&gt;lineNo(), eval-&gt;startColumn());
</ins><span class="cx"> 
</span><span class="cx">     // Execute the code:
</span><span class="cx">     JSValue result;
</span><span class="lines">@@ -1181,7 +1181,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (LegacyProfiler* profiler = vm.enabledProfiler())
</span><del>-        profiler-&gt;didExecute(callFrame, eval-&gt;sourceURL(), eval-&gt;lineNo());
</del><ins>+        profiler-&gt;didExecute(callFrame, eval-&gt;sourceURL(), eval-&gt;lineNo(), eval-&gt;startColumn());
</ins><span class="cx"> 
</span><span class="cx">     return checkedReturn(result);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerCallIdentifierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/CallIdentifier.h (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/CallIdentifier.h        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/CallIdentifier.h        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008, 2014 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -36,32 +36,37 @@
</span><span class="cx">     struct CallIdentifier {
</span><span class="cx">         WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx">     public:
</span><del>-        String m_name;
-        String m_url;
-        unsigned m_lineNumber;
-
</del><span class="cx">         CallIdentifier()
</span><span class="cx">             : m_lineNumber(0)
</span><ins>+            , m_columnNumber(0)
</ins><span class="cx">         {
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        CallIdentifier(const String&amp; name, const String&amp; url, int lineNumber)
-            : m_name(name)
</del><ins>+        CallIdentifier(const String&amp; functionName, const String&amp; url, unsigned lineNumber, unsigned columnNumber)
+            : m_functionName(functionName)
</ins><span class="cx">             , m_url(!url.isNull() ? url : &quot;&quot;)
</span><span class="cx">             , m_lineNumber(lineNumber)
</span><ins>+            , m_columnNumber(columnNumber)
</ins><span class="cx">         {
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        inline bool operator==(const CallIdentifier&amp; ci) const { return ci.m_lineNumber == m_lineNumber &amp;&amp; ci.m_name == m_name &amp;&amp; ci.m_url == m_url; }
-        inline bool operator!=(const CallIdentifier&amp; ci) const { return !(*this == ci); }
</del><ins>+        const String&amp; functionName() const { return m_functionName; }
</ins><span class="cx"> 
</span><ins>+        const String&amp; url() const { return m_url; }
+        unsigned lineNumber() const { return m_lineNumber; }
+        unsigned columnNumber() const { return m_columnNumber; }
+
+        inline bool operator==(const CallIdentifier&amp; other) const { return other.m_lineNumber == m_lineNumber &amp;&amp; other.m_columnNumber == m_columnNumber &amp;&amp; other.m_functionName == m_functionName &amp;&amp; other.m_url == m_url; }
+        inline bool operator!=(const CallIdentifier&amp; other) const { return !(*this == other); }
+
</ins><span class="cx">         struct Hash {
</span><span class="cx">             static unsigned hash(const CallIdentifier&amp; key)
</span><span class="cx">             {
</span><del>-                unsigned hashCodes[3] = {
-                    key.m_name.impl()-&gt;hash(),
</del><ins>+                unsigned hashCodes[4] = {
+                    key.m_functionName.impl()-&gt;hash(),
</ins><span class="cx">                     key.m_url.impl()-&gt;hash(),
</span><del>-                    key.m_lineNumber
</del><ins>+                    key.m_lineNumber,
+                    key.m_columnNumber
</ins><span class="cx">                 };
</span><span class="cx">                 return StringHasher::hashMemory&lt;sizeof(hashCodes)&gt;(hashCodes);
</span><span class="cx">             }
</span><span class="lines">@@ -76,6 +81,12 @@
</span><span class="cx">         operator const char*() const { return c_str(); }
</span><span class="cx">         const char* c_str() const { return m_name.utf8().data(); }
</span><span class="cx"> #endif
</span><ins>+
+    private:
+        String m_functionName;
+        String m_url;
+        unsigned m_lineNumber;
+        unsigned m_columnNumber;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="lines">@@ -87,15 +98,15 @@
</span><span class="cx">     template&lt;&gt; struct HashTraits&lt;JSC::CallIdentifier&gt; : GenericHashTraits&lt;JSC::CallIdentifier&gt; {
</span><span class="cx">         static void constructDeletedValue(JSC::CallIdentifier&amp; slot)
</span><span class="cx">         {
</span><del>-            new (NotNull, &amp;slot) JSC::CallIdentifier(String(), String(), std::numeric_limits&lt;unsigned&gt;::max());
</del><ins>+            new (NotNull, &amp;slot) JSC::CallIdentifier(String(), String(), std::numeric_limits&lt;unsigned&gt;::max(), std::numeric_limits&lt;unsigned&gt;::max());
</ins><span class="cx">         }
</span><ins>+
</ins><span class="cx">         static bool isDeletedValue(const JSC::CallIdentifier&amp; value)
</span><span class="cx">         {
</span><del>-            return value.m_name.isNull() &amp;&amp; value.m_url.isNull() &amp;&amp; value.m_lineNumber == std::numeric_limits&lt;unsigned&gt;::max();
</del><ins>+            return value.functionName().isNull() &amp;&amp; value.url().isNull() &amp;&amp; value.lineNumber() == std::numeric_limits&lt;unsigned&gt;::max() &amp;&amp; value.columnNumber() == std::numeric_limits&lt;unsigned&gt;::max();
</ins><span class="cx">         }
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WTF
</span><span class="cx"> 
</span><span class="cx"> #endif  // CallIdentifier_h
</span><del>-
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerLegacyProfilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/LegacyProfiler.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/LegacyProfiler.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/LegacyProfiler.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2012 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008, 2012, 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> static const char* AnonymousFunction = &quot;(anonymous function)&quot;;
</span><span class="cx"> static unsigned ProfilesUID = 0;
</span><span class="cx"> 
</span><del>-static CallIdentifier createCallIdentifierFromFunctionImp(ExecState*, JSObject*, const String&amp; defaultSourceURL, int defaultLineNumber);
</del><ins>+static CallIdentifier createCallIdentifierFromFunctionImp(ExecState*, JSObject*, const String&amp; defaultSourceURL, unsigned defaultLineNumber, unsigned defaultColumnNumber);
</ins><span class="cx"> 
</span><span class="cx"> LegacyProfiler* LegacyProfiler::s_sharedLegacyProfiler = 0;
</span><span class="cx"> 
</span><span class="lines">@@ -128,14 +128,14 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_currentProfiles.isEmpty());
</span><span class="cx"> 
</span><del>-    dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &amp;ProfileGenerator::willExecute, createCallIdentifier(callerCallFrame, function, &quot;&quot;, 0), callerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</del><ins>+    dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &amp;ProfileGenerator::willExecute, createCallIdentifier(callerCallFrame, function, ASCIILiteral(&quot;&quot;), 0, 0), callerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void LegacyProfiler::willExecute(ExecState* callerCallFrame, const String&amp; sourceURL, int startingLineNumber)
</del><ins>+void LegacyProfiler::willExecute(ExecState* callerCallFrame, const String&amp; sourceURL, unsigned startingLineNumber, unsigned startingColumnNumber)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_currentProfiles.isEmpty());
</span><span class="cx"> 
</span><del>-    CallIdentifier callIdentifier = createCallIdentifier(callerCallFrame, JSValue(), sourceURL, startingLineNumber);
</del><ins>+    CallIdentifier callIdentifier = createCallIdentifier(callerCallFrame, JSValue(), sourceURL, startingLineNumber, startingColumnNumber);
</ins><span class="cx"> 
</span><span class="cx">     dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &amp;ProfileGenerator::willExecute, callIdentifier, callerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</span><span class="cx"> }
</span><span class="lines">@@ -144,41 +144,41 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_currentProfiles.isEmpty());
</span><span class="cx"> 
</span><del>-    dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &amp;ProfileGenerator::didExecute, createCallIdentifier(callerCallFrame, function, &quot;&quot;, 0), callerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</del><ins>+    dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &amp;ProfileGenerator::didExecute, createCallIdentifier(callerCallFrame, function, ASCIILiteral(&quot;&quot;), 0, 0), callerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void LegacyProfiler::didExecute(ExecState* callerCallFrame, const String&amp; sourceURL, int startingLineNumber)
</del><ins>+void LegacyProfiler::didExecute(ExecState* callerCallFrame, const String&amp; sourceURL, unsigned startingLineNumber, unsigned startingColumnNumber)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_currentProfiles.isEmpty());
</span><span class="cx"> 
</span><del>-    dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &amp;ProfileGenerator::didExecute, createCallIdentifier(callerCallFrame, JSValue(), sourceURL, startingLineNumber), callerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</del><ins>+    dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &amp;ProfileGenerator::didExecute, createCallIdentifier(callerCallFrame, JSValue(), sourceURL, startingLineNumber, startingColumnNumber), callerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void LegacyProfiler::exceptionUnwind(ExecState* handlerCallFrame)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_currentProfiles.isEmpty());
</span><span class="cx"> 
</span><del>-    dispatchFunctionToProfiles(handlerCallFrame, m_currentProfiles, &amp;ProfileGenerator::exceptionUnwind, createCallIdentifier(handlerCallFrame, JSValue(), &quot;&quot;, 0), handlerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</del><ins>+    dispatchFunctionToProfiles(handlerCallFrame, m_currentProfiles, &amp;ProfileGenerator::exceptionUnwind, createCallIdentifier(handlerCallFrame, JSValue(), ASCIILiteral(&quot;&quot;), 0, 0), handlerCallFrame-&gt;lexicalGlobalObject()-&gt;profileGroup());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-CallIdentifier LegacyProfiler::createCallIdentifier(ExecState* exec, JSValue functionValue, const String&amp; defaultSourceURL, int defaultLineNumber)
</del><ins>+CallIdentifier LegacyProfiler::createCallIdentifier(ExecState* exec, JSValue functionValue, const String&amp; defaultSourceURL, unsigned defaultLineNumber, unsigned defaultColumnNumber)
</ins><span class="cx"> {
</span><span class="cx">     if (!functionValue)
</span><del>-        return CallIdentifier(GlobalCodeExecution, defaultSourceURL, defaultLineNumber);
</del><ins>+        return CallIdentifier(ASCIILiteral(GlobalCodeExecution), defaultSourceURL, defaultLineNumber, defaultColumnNumber);
</ins><span class="cx">     if (!functionValue.isObject())
</span><del>-        return CallIdentifier(&quot;(unknown)&quot;, defaultSourceURL, defaultLineNumber);
</del><ins>+        return CallIdentifier(ASCIILiteral(&quot;(unknown)&quot;), defaultSourceURL, defaultLineNumber, defaultColumnNumber);
</ins><span class="cx">     if (asObject(functionValue)-&gt;inherits(JSFunction::info()) || asObject(functionValue)-&gt;inherits(InternalFunction::info()))
</span><del>-        return createCallIdentifierFromFunctionImp(exec, asObject(functionValue), defaultSourceURL, defaultLineNumber);
-    return CallIdentifier(makeString(&quot;(&quot;, asObject(functionValue)-&gt;methodTable()-&gt;className(asObject(functionValue)), &quot; object)&quot;), defaultSourceURL, defaultLineNumber);
</del><ins>+        return createCallIdentifierFromFunctionImp(exec, asObject(functionValue), defaultSourceURL, defaultLineNumber, defaultColumnNumber);
+    return CallIdentifier(asObject(functionValue)-&gt;methodTable()-&gt;className(asObject(functionValue)), defaultSourceURL, defaultLineNumber, defaultColumnNumber);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-CallIdentifier createCallIdentifierFromFunctionImp(ExecState* exec, JSObject* function, const String&amp; defaultSourceURL, int defaultLineNumber)
</del><ins>+CallIdentifier createCallIdentifierFromFunctionImp(ExecState* exec, JSObject* function, const String&amp; defaultSourceURL, unsigned defaultLineNumber, unsigned defaultColumnNumber)
</ins><span class="cx"> {
</span><span class="cx">     const String&amp; name = getCalculatedDisplayName(exec, function);
</span><span class="cx">     JSFunction* jsFunction = jsDynamicCast&lt;JSFunction*&gt;(function);
</span><span class="cx">     if (jsFunction &amp;&amp; !jsFunction-&gt;isHostFunction())
</span><del>-        return CallIdentifier(name.isEmpty() ? AnonymousFunction : name, jsFunction-&gt;jsExecutable()-&gt;sourceURL(), jsFunction-&gt;jsExecutable()-&gt;lineNo());
-    return CallIdentifier(name.isEmpty() ? AnonymousFunction : name, defaultSourceURL, defaultLineNumber);
</del><ins>+        return CallIdentifier(name.isEmpty() ? ASCIILiteral(AnonymousFunction) : name, jsFunction-&gt;jsExecutable()-&gt;sourceURL(), jsFunction-&gt;jsExecutable()-&gt;lineNo(), jsFunction-&gt;jsExecutable()-&gt;startColumn());
+    return CallIdentifier(name.isEmpty() ? ASCIILiteral(AnonymousFunction) : name, defaultSourceURL, defaultLineNumber, defaultColumnNumber);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerLegacyProfilerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/LegacyProfiler.h (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/LegacyProfiler.h        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/LegacyProfiler.h        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2012 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008, 2012, 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -48,16 +48,16 @@
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="cx">     JS_EXPORT_PRIVATE static LegacyProfiler* profiler(); 
</span><del>-    static CallIdentifier createCallIdentifier(ExecState*, JSValue, const WTF::String&amp; sourceURL, int lineNumber);
</del><ins>+    static CallIdentifier createCallIdentifier(ExecState*, JSValue, const WTF::String&amp; sourceURL, unsigned defaultLineNumber, unsigned defaultColumnNumber);
</ins><span class="cx"> 
</span><span class="cx">     JS_EXPORT_PRIVATE void startProfiling(ExecState*, const WTF::String&amp; title);
</span><span class="cx">     JS_EXPORT_PRIVATE PassRefPtr&lt;Profile&gt; stopProfiling(ExecState*, const WTF::String&amp; title);
</span><span class="cx">     void stopProfiling(JSGlobalObject*);
</span><span class="cx"> 
</span><span class="cx">     void willExecute(ExecState* callerCallFrame, JSValue function);
</span><del>-    void willExecute(ExecState* callerCallFrame, const WTF::String&amp; sourceURL, int startingLineNumber);
</del><ins>+    void willExecute(ExecState* callerCallFrame, const WTF::String&amp; sourceURL, unsigned startingLineNumber, unsigned startingColumnNumber);
</ins><span class="cx">     void didExecute(ExecState* callerCallFrame, JSValue function);
</span><del>-    void didExecute(ExecState* callerCallFrame, const WTF::String&amp; sourceURL, int startingLineNumber);
</del><ins>+    void didExecute(ExecState* callerCallFrame, const WTF::String&amp; sourceURL, unsigned startingLineNumber, unsigned startingColumnNumber);
</ins><span class="cx"> 
</span><span class="cx">     void exceptionUnwind(ExecState* handlerCallFrame);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/Profile.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/Profile.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/Profile.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008, 2014 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -39,10 +39,11 @@
</span><span class="cx"> Profile::Profile(const String&amp; title, unsigned uid)
</span><span class="cx">     : m_title(title)
</span><span class="cx">     , m_uid(uid)
</span><ins>+    , m_idleTime(0)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: When multi-threading is supported this will be a vector and calls
</span><span class="cx">     // into the profiler will need to know which thread it is executing on.
</span><del>-    m_head = ProfileNode::create(0, CallIdentifier(&quot;Thread_1&quot;, String(), 0), 0, 0);
</del><ins>+    m_head = ProfileNode::create(0, CallIdentifier(&quot;Thread_1&quot;, String(), 0, 0), 0, 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Profile::~Profile()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/Profile.h (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/Profile.h        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/Profile.h        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008, 2014 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -39,11 +39,16 @@
</span><span class="cx">         virtual ~Profile();
</span><span class="cx"> 
</span><span class="cx">         const String&amp; title() const { return m_title; }
</span><ins>+        unsigned uid() const { return m_uid; }
+
</ins><span class="cx">         ProfileNode* head() const { return m_head.get(); }
</span><span class="cx">         void setHead(PassRefPtr&lt;ProfileNode&gt; head) { m_head = head; }
</span><ins>+
</ins><span class="cx">         double totalTime() const { return m_head-&gt;totalTime(); }
</span><del>-        unsigned int uid() const { return m_uid; }
</del><span class="cx"> 
</span><ins>+        double idleTime() const { return m_idleTime; }
+        void setIdleTime(double idleTime) { m_idleTime = idleTime; }
+
</ins><span class="cx">         void forEach(void (ProfileNode::*)());
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><span class="lines">@@ -61,6 +66,7 @@
</span><span class="cx">         String m_title;
</span><span class="cx">         RefPtr&lt;ProfileNode&gt; m_head;
</span><span class="cx">         unsigned int m_uid;
</span><ins>+        double m_idleTime;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008, 2014 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -40,8 +40,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-static const char* NonJSExecution = &quot;(idle)&quot;;
-
</del><span class="cx"> PassRefPtr&lt;ProfileGenerator&gt; ProfileGenerator::create(ExecState* exec, const String&amp; title, unsigned uid)
</span><span class="cx"> {
</span><span class="cx">     return adoptRef(new ProfileGenerator(exec, title, uid));
</span><span class="lines">@@ -50,6 +48,7 @@
</span><span class="cx"> ProfileGenerator::ProfileGenerator(ExecState* exec, const String&amp; title, unsigned uid)
</span><span class="cx">     : m_origin(exec ? exec-&gt;lexicalGlobalObject() : 0)
</span><span class="cx">     , m_profileGroup(exec ? exec-&gt;lexicalGlobalObject()-&gt;profileGroup() : 0)
</span><ins>+    , m_foundConsoleStartParent(false)
</ins><span class="cx"> {
</span><span class="cx">     m_profile = Profile::create(title, uid);
</span><span class="cx">     m_currentNode = m_head = m_profile-&gt;head();
</span><span class="lines">@@ -78,9 +77,9 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         unsigned line = 0;
</span><del>-        unsigned unusedColumn = 0;
-        visitor-&gt;computeLineAndColumn(line, unusedColumn);
-        m_currentNode = ProfileNode::create(m_exec, LegacyProfiler::createCallIdentifier(m_exec, visitor-&gt;callee(), visitor-&gt;sourceURL(), line), m_head.get(), m_head.get());
</del><ins>+        unsigned column = 0;
+        visitor-&gt;computeLineAndColumn(line, column);
+        m_currentNode = ProfileNode::create(m_exec, LegacyProfiler::createCallIdentifier(m_exec, visitor-&gt;callee(), visitor-&gt;sourceURL(), line, column), m_head.get(), m_head.get());
</ins><span class="cx">         m_head-&gt;insertNode(m_currentNode.get());
</span><span class="cx"> 
</span><span class="cx">         m_foundParent = true;
</span><span class="lines">@@ -100,10 +99,7 @@
</span><span class="cx">     AddParentForConsoleStartFunctor functor(exec, m_head, m_currentNode);
</span><span class="cx">     exec-&gt;iterate(functor);
</span><span class="cx"> 
</span><del>-    if (!functor.foundParent()) {
-        m_currentNode = ProfileNode::create(exec, LegacyProfiler::createCallIdentifier(exec, JSValue(), String(), 0), m_head.get(), m_head.get());
-        m_head-&gt;insertNode(m_currentNode.get());
-    }
</del><ins>+    m_foundConsoleStartParent = functor.foundParent();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const String&amp; ProfileGenerator::title() const
</span><span class="lines">@@ -114,9 +110,9 @@
</span><span class="cx"> void ProfileGenerator::willExecute(ExecState* callerCallFrame, const CallIdentifier&amp; callIdentifier)
</span><span class="cx"> {
</span><span class="cx">     if (JAVASCRIPTCORE_PROFILE_WILL_EXECUTE_ENABLED()) {
</span><del>-        CString name = callIdentifier.m_name.utf8();
-        CString url = callIdentifier.m_url.utf8();
-        JAVASCRIPTCORE_PROFILE_WILL_EXECUTE(m_profileGroup, const_cast&lt;char*&gt;(name.data()), const_cast&lt;char*&gt;(url.data()), callIdentifier.m_lineNumber);
</del><ins>+        CString name = callIdentifier.functionName().utf8();
+        CString url = callIdentifier.url().utf8();
+        JAVASCRIPTCORE_PROFILE_WILL_EXECUTE(m_profileGroup, const_cast&lt;char*&gt;(name.data()), const_cast&lt;char*&gt;(url.data()), callIdentifier.lineNumber());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!m_origin)
</span><span class="lines">@@ -129,9 +125,9 @@
</span><span class="cx"> void ProfileGenerator::didExecute(ExecState* callerCallFrame, const CallIdentifier&amp; callIdentifier)
</span><span class="cx"> {
</span><span class="cx">     if (JAVASCRIPTCORE_PROFILE_DID_EXECUTE_ENABLED()) {
</span><del>-        CString name = callIdentifier.m_name.utf8();
-        CString url = callIdentifier.m_url.utf8();
-        JAVASCRIPTCORE_PROFILE_DID_EXECUTE(m_profileGroup, const_cast&lt;char*&gt;(name.data()), const_cast&lt;char*&gt;(url.data()), callIdentifier.m_lineNumber);
</del><ins>+        CString name = callIdentifier.functionName().utf8();
+        CString url = callIdentifier.url().utf8();
+        JAVASCRIPTCORE_PROFILE_DID_EXECUTE(m_profileGroup, const_cast&lt;char*&gt;(name.data()), const_cast&lt;char*&gt;(url.data()), callIdentifier.lineNumber());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!m_origin)
</span><span class="lines">@@ -140,7 +136,7 @@
</span><span class="cx">     ASSERT(m_currentNode);
</span><span class="cx">     if (m_currentNode-&gt;callIdentifier() != callIdentifier) {
</span><span class="cx">         RefPtr&lt;ProfileNode&gt; returningNode = ProfileNode::create(callerCallFrame, callIdentifier, m_head.get(), m_currentNode.get());
</span><del>-        returningNode-&gt;setStartTime(m_currentNode-&gt;startTime());
</del><ins>+        returningNode-&gt;lastCall().setStartTime(m_currentNode-&gt;lastCall().startTime());
</ins><span class="cx">         returningNode-&gt;didExecute();
</span><span class="cx">         m_currentNode-&gt;insertNode(returningNode.release());
</span><span class="cx">         return;
</span><span class="lines">@@ -164,8 +160,10 @@
</span><span class="cx"> {
</span><span class="cx">     m_profile-&gt;forEach(&amp;ProfileNode::stopProfiling);
</span><span class="cx"> 
</span><del>-    removeProfileStart();
-    removeProfileEnd();
</del><ins>+    if (m_foundConsoleStartParent) {
+        removeProfileStart();
+        removeProfileEnd();
+    }
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(m_currentNode);
</span><span class="cx"> 
</span><span class="lines">@@ -173,14 +171,9 @@
</span><span class="cx">     // will not get didExecute call.
</span><span class="cx">     m_currentNode = m_currentNode-&gt;parent();
</span><span class="cx"> 
</span><del>-   if (double headSelfTime = m_head-&gt;selfTime()) {
-        RefPtr&lt;ProfileNode&gt; idleNode = ProfileNode::create(0, CallIdentifier(NonJSExecution, String(), 0), m_head.get(), m_head.get());
-
-        idleNode-&gt;setTotalTime(headSelfTime);
-        idleNode-&gt;setSelfTime(headSelfTime);
-
</del><ins>+    if (double headSelfTime = m_head-&gt;selfTime()) {
</ins><span class="cx">         m_head-&gt;setSelfTime(0.0);
</span><del>-        m_head-&gt;addChild(idleNode.release());
</del><ins>+        m_profile-&gt;setIdleTime(headSelfTime);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -191,7 +184,7 @@
</span><span class="cx">     for (ProfileNode* next = m_head.get(); next; next = next-&gt;firstChild())
</span><span class="cx">         currentNode = next;
</span><span class="cx"> 
</span><del>-    if (currentNode-&gt;callIdentifier().m_name != &quot;profile&quot;)
</del><ins>+    if (currentNode-&gt;callIdentifier().functionName() != &quot;profile&quot;)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Attribute the time of the node aobut to be removed to the self time of its parent
</span><span class="lines">@@ -206,7 +199,7 @@
</span><span class="cx">     for (ProfileNode* next = m_head.get(); next; next = next-&gt;lastChild())
</span><span class="cx">         currentNode = next;
</span><span class="cx"> 
</span><del>-    if (currentNode-&gt;callIdentifier().m_name != &quot;profileEnd&quot;)
</del><ins>+    if (currentNode-&gt;callIdentifier().functionName() != &quot;profileEnd&quot;)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Attribute the time of the node aobut to be removed to the self time of its parent
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfileGenerator.h (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfileGenerator.h        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/ProfileGenerator.h        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -72,6 +72,7 @@
</span><span class="cx">         unsigned m_profileGroup;
</span><span class="cx">         RefPtr&lt;ProfileNode&gt; m_head;
</span><span class="cx">         RefPtr&lt;ProfileNode&gt; m_currentNode;
</span><ins>+        bool m_foundConsoleStartParent;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfileNode.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfileNode.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/ProfileNode.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008, 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -34,38 +34,18 @@
</span><span class="cx"> #include &lt;wtf/DataLog.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><span class="cx"> 
</span><del>-#if OS(WINDOWS)
-#include &lt;windows.h&gt;
-#endif
-
</del><span class="cx"> using namespace WTF;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-static double getCount()
-{
-#if OS(WINDOWS)
-    static LARGE_INTEGER frequency;
-    if (!frequency.QuadPart)
-        QueryPerformanceFrequency(&amp;frequency);
-    LARGE_INTEGER counter;
-    QueryPerformanceCounter(&amp;counter);
-    return static_cast&lt;double&gt;(counter.QuadPart) / frequency.QuadPart;
-#else
-    return currentTimeMS();
-#endif
-}
-
</del><span class="cx"> ProfileNode::ProfileNode(ExecState* callerCallFrame, const CallIdentifier&amp; callIdentifier, ProfileNode* headNode, ProfileNode* parentNode)
</span><span class="cx">     : m_callerCallFrame(callerCallFrame)
</span><span class="cx">     , m_callIdentifier(callIdentifier)
</span><span class="cx">     , m_head(headNode)
</span><span class="cx">     , m_parent(parentNode)
</span><del>-    , m_nextSibling(0)
-    , m_startTime(0.0)
-    , m_totalTime(0.0)
-    , m_selfTime(0.0)
-    , m_numberOfCalls(0)
</del><ins>+    , m_nextSibling(nullptr)
+    , m_totalTime(0)
+    , m_selfTime(0)
</ins><span class="cx"> {
</span><span class="cx">     startTimer();
</span><span class="cx"> }
</span><span class="lines">@@ -76,10 +56,9 @@
</span><span class="cx">     , m_head(headNode)
</span><span class="cx">     , m_parent(nodeToCopy-&gt;parent())
</span><span class="cx">     , m_nextSibling(0)
</span><del>-    , m_startTime(0.0)
</del><span class="cx">     , m_totalTime(nodeToCopy-&gt;totalTime())
</span><span class="cx">     , m_selfTime(nodeToCopy-&gt;selfTime())
</span><del>-    , m_numberOfCalls(nodeToCopy-&gt;numberOfCalls())
</del><ins>+    , m_calls(nodeToCopy-&gt;calls())
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -142,11 +121,11 @@
</span><span class="cx"> 
</span><span class="cx"> void ProfileNode::stopProfiling()
</span><span class="cx"> {
</span><del>-    if (m_startTime)
</del><ins>+    ASSERT(!m_calls.isEmpty());
+
+    if (isnan(m_calls.last().totalTime()))
</ins><span class="cx">         endAndRecordCall();
</span><span class="cx"> 
</span><del>-    ASSERT(m_selfTime == 0.0 &amp;&amp; m_startTime == 0.0);
-
</del><span class="cx">     // Because we iterate in post order all of our children have been stopped before us.
</span><span class="cx">     for (unsigned i = 0; i &lt; m_children.size(); ++i)
</span><span class="cx">         m_selfTime += m_children[i]-&gt;totalTime();
</span><span class="lines">@@ -167,16 +146,17 @@
</span><span class="cx"> 
</span><span class="cx"> void ProfileNode::endAndRecordCall()
</span><span class="cx"> {
</span><del>-    m_totalTime += m_startTime ? getCount() - m_startTime : 0.0;
-    m_startTime = 0.0;
</del><ins>+    Call&amp; last = lastCall();
+    ASSERT(isnan(last.totalTime()));
</ins><span class="cx"> 
</span><del>-    ++m_numberOfCalls;
</del><ins>+    last.setTotalTime(currentTime() - last.startTime());
+
+    m_totalTime += last.totalTime();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ProfileNode::startTimer()
</span><span class="cx"> {
</span><del>-    if (!m_startTime)
-        m_startTime = getCount();
</del><ins>+    m_calls.append(Call(currentTime()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ProfileNode::resetChildrensSiblings()
</span><span class="lines">@@ -193,9 +173,9 @@
</span><span class="cx">     for (int i = 0; i &lt; indentLevel; ++i)
</span><span class="cx">         dataLogF(&quot;  &quot;);
</span><span class="cx"> 
</span><del>-    dataLogF(&quot;Function Name %s %d SelfTime %.3fms/%.3f%% TotalTime %.3fms/%.3f%% Next Sibling %s\n&quot;,
-        functionName().utf8().data(), 
-        m_numberOfCalls, m_selfTime, selfPercent(), m_totalTime, totalPercent(),
</del><ins>+    dataLogF(&quot;Function Name %s %zu SelfTime %.3fms/%.3f%% TotalTime %.3fms/%.3f%% Next Sibling %s\n&quot;,
+        functionName().utf8().data(),
+        numberOfCalls(), m_selfTime, selfPercent(), m_totalTime, totalPercent(),
</ins><span class="cx">         m_nextSibling ? m_nextSibling-&gt;functionName().utf8().data() : &quot;&quot;);
</span><span class="cx"> 
</span><span class="cx">     ++indentLevel;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfileNode.h (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfileNode.h        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/JavaScriptCore/profiler/ProfileNode.h        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008, 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -54,6 +54,25 @@
</span><span class="cx">             return adoptRef(new ProfileNode(callerCallFrame, headNode, node));
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        struct Call {
+        public:
+            Call(double startTime, double totalTime = NAN)
+                : m_startTime(startTime)
+                , m_totalTime(totalTime)
+            {
+            }
+
+            double startTime() const { return m_startTime; }
+            void setStartTime(double time) { m_startTime = time; }
+
+            double totalTime() const { return m_totalTime; }
+            void setTotalTime(double time) { m_totalTime = time; }
+
+        private:
+            double m_startTime;
+            double m_totalTime;
+        };
+
</ins><span class="cx">         bool operator==(ProfileNode* node) { return m_callIdentifier == node-&gt;callIdentifier(); }
</span><span class="cx"> 
</span><span class="cx">         ProfileNode* willExecute(ExecState* callerCallFrame, const CallIdentifier&amp;);
</span><span class="lines">@@ -64,10 +83,11 @@
</span><span class="cx">         // CallIdentifier members
</span><span class="cx">         ExecState* callerCallFrame() const { return m_callerCallFrame; }
</span><span class="cx">         const CallIdentifier&amp; callIdentifier() const { return m_callIdentifier; }
</span><del>-        unsigned long callUID() const { return m_callIdentifier.hash(); };
-        const String&amp; functionName() const { return m_callIdentifier.m_name; }
-        const String&amp; url() const { return m_callIdentifier.m_url; }
-        unsigned lineNumber() const { return m_callIdentifier.m_lineNumber; }
</del><ins>+        unsigned id() const { return m_callIdentifier.hash(); }
+        const String&amp; functionName() const { return m_callIdentifier.functionName(); }
+        const String&amp; url() const { return m_callIdentifier.url(); }
+        unsigned lineNumber() const { return m_callIdentifier.lineNumber(); }
+        unsigned columnNumber() const { return m_callIdentifier.columnNumber(); }
</ins><span class="cx"> 
</span><span class="cx">         // Relationships
</span><span class="cx">         ProfileNode* head() const { return m_head; }
</span><span class="lines">@@ -80,9 +100,6 @@
</span><span class="cx">         void setNextSibling(ProfileNode* nextSibling) { m_nextSibling = nextSibling; }
</span><span class="cx"> 
</span><span class="cx">         // Time members
</span><del>-        double startTime() const { return m_startTime; }
-        void setStartTime(double startTime) { m_startTime = startTime; }
-
</del><span class="cx">         double totalTime() const { return m_totalTime; }
</span><span class="cx">         void setTotalTime(double time) { m_totalTime = time; }
</span><span class="cx"> 
</span><span class="lines">@@ -92,7 +109,9 @@
</span><span class="cx">         double totalPercent() const { return (m_totalTime / (m_head ? m_head-&gt;totalTime() : totalTime())) * 100.0; }
</span><span class="cx">         double selfPercent() const { return (m_selfTime / (m_head ? m_head-&gt;totalTime() : totalTime())) * 100.0; }
</span><span class="cx"> 
</span><del>-        unsigned numberOfCalls() const { return m_numberOfCalls; }
</del><ins>+        Vector&lt;Call&gt; calls() const { return m_calls; }
+        Call&amp; lastCall() { ASSERT(!m_calls.isEmpty()); return m_calls.last(); }
+        size_t numberOfCalls() const { return m_calls.size(); }
</ins><span class="cx"> 
</span><span class="cx">         // Children members
</span><span class="cx">         const Vector&lt;RefPtr&lt;ProfileNode&gt;&gt;&amp; children() const { return m_children; }
</span><span class="lines">@@ -104,8 +123,6 @@
</span><span class="cx"> 
</span><span class="cx">         ProfileNode* traverseNextNodePostOrder() const;
</span><span class="cx"> 
</span><del>-        void endAndRecordCall();
-
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx">         const char* c_str() const { return m_callIdentifier; }
</span><span class="cx">         void debugPrintData(int indentLevel) const;
</span><span class="lines">@@ -120,6 +137,7 @@
</span><span class="cx"> 
</span><span class="cx">         void startTimer();
</span><span class="cx">         void resetChildrensSiblings();
</span><ins>+        void endAndRecordCall();
</ins><span class="cx"> 
</span><span class="cx">         ExecState* m_callerCallFrame;
</span><span class="cx">         CallIdentifier m_callIdentifier;
</span><span class="lines">@@ -127,11 +145,10 @@
</span><span class="cx">         ProfileNode* m_parent;
</span><span class="cx">         ProfileNode* m_nextSibling;
</span><span class="cx"> 
</span><del>-        double m_startTime;
</del><span class="cx">         double m_totalTime;
</span><span class="cx">         double m_selfTime;
</span><del>-        unsigned m_numberOfCalls;
</del><span class="cx"> 
</span><ins>+        Vector&lt;Call, 1&gt; m_calls;
</ins><span class="cx">         Vector&lt;RefPtr&lt;ProfileNode&gt;&gt; m_children;
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/WebCore/ChangeLog        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2014-01-28  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Add column number and call timing support to LegacyProfiler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=127764
+
+        Reviewed by Joseph Pecoraro.
+
+        * bindings/js/ScriptProfile.cpp:
+        (WebCore::ScriptProfile::idleTime):
+        (WebCore::buildInspectorObjectFor):
+        (WebCore::ScriptProfile::buildInspectorObject):
+        * bindings/js/ScriptProfile.h:
+        * inspector/InspectorHeapProfilerAgent.cpp:
+        (WebCore::InspectorHeapProfilerAgent::createSnapshotHeader):
+        * inspector/InspectorProfilerAgent.cpp:
+        (WebCore::InspectorProfilerAgent::createSnapshotHeader):
+        (WebCore::InspectorProfilerAgent::getCPUProfile):
+        * inspector/ScriptProfileNode.idl:
+        * inspector/TimelineRecordFactory.cpp:
+        (WebCore::TimelineRecordFactory::appendProfile):
+        * inspector/protocol/Profiler.json:
+
</ins><span class="cx"> 2014-01-26  Timothy Hatcher  &lt;timothy@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Include profile with FunctionCall and EvaluateScript Timeline records.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptProfilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptProfile.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptProfile.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/WebCore/bindings/js/ScriptProfile.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2010 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2010, 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2010 Google Inc. All rights reserved.
</span><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -68,39 +68,60 @@
</span><span class="cx"> 
</span><span class="cx"> double ScriptProfile::idleTime() const
</span><span class="cx"> {
</span><del>-    return 0.0;
</del><ins>+    return m_profile-&gt;idleTime();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><ins>+static PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNodeCall&gt; buildInspectorObjectFor(const JSC::ProfileNode::Call&amp; call)
+{
+    RefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNodeCall&gt; result = Inspector::TypeBuilder::Profiler::CPUProfileNodeCall::create()
+        .setStartTime(call.startTime())
+        .setTotalTime(call.totalTime());
+    return result.release();
+}
+
</ins><span class="cx"> static PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectFor(const JSC::ProfileNode* node)
</span><span class="cx"> {
</span><del>-    typedef Vector&lt;RefPtr&lt;JSC::ProfileNode&gt;&gt; ProfileNodesList;
-    const ProfileNodesList&amp; nodeChildren = node-&gt;children();
-    ProfileNodesList::const_iterator end = nodeChildren.end();
-    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt;&gt; children = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt;::create();
-    for (ProfileNodesList::const_iterator iter = nodeChildren.begin(); iter != end; ++iter)
-        children-&gt;addItem(buildInspectorObjectFor(iter-&gt;get()));
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNodeCall&gt;&gt; calls = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNodeCall&gt;::create();
+    for (const JSC::ProfileNode::Call&amp; call : node-&gt;calls())
+        calls-&gt;addItem(buildInspectorObjectFor(call));
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; result = Inspector::TypeBuilder::Profiler::CPUProfileNode::create()
</span><del>-        .setFunctionName(node-&gt;functionName())
-        .setUrl(node-&gt;url())
-        .setLineNumber(node-&gt;lineNumber())
-        .setTotalTime(node-&gt;totalTime())
-        .setSelfTime(node-&gt;selfTime())
-        .setNumberOfCalls(node-&gt;numberOfCalls())
-        .setCallUID(node-&gt;callIdentifier().hash())
-        .setChildren(children.release());
</del><ins>+        .setId(node-&gt;id())
+        .setCalls(calls.release());
+
+    if (!node-&gt;functionName().isEmpty())
+        result-&gt;setFunctionName(node-&gt;functionName());
+
+    if (!node-&gt;url().isEmpty()) {
+        result-&gt;setUrl(node-&gt;url());
+        result-&gt;setLineNumber(node-&gt;lineNumber());
+        result-&gt;setColumnNumber(node-&gt;columnNumber());
+    }
+
+    if (!node-&gt;children().isEmpty()) {
+        RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt;&gt; children = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt;::create();
+        for (RefPtr&lt;JSC::ProfileNode&gt; profileNode : node-&gt;children())
+            children-&gt;addItem(buildInspectorObjectFor(profileNode.get()));
+        result-&gt;setChildren(children);
+    }
+
</ins><span class="cx">     return result.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; ScriptProfile::buildInspectorObjectForHead() const
</del><ins>+PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfile&gt; ScriptProfile::buildInspectorObject() const
</ins><span class="cx"> {
</span><del>-    return buildInspectorObjectFor(m_profile-&gt;head());
-}
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt;&gt; rootNodes = Inspector::TypeBuilder::Array&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt;::create();
+    for (RefPtr&lt;JSC::ProfileNode&gt; profileNode : m_profile-&gt;head()-&gt;children())
+        rootNodes-&gt;addItem(buildInspectorObjectFor(profileNode.get()));
</ins><span class="cx"> 
</span><del>-PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; ScriptProfile::buildInspectorObjectForBottomUpHead() const
-{
-    return 0;
</del><ins>+    RefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfile&gt; result = Inspector::TypeBuilder::Profiler::CPUProfile::create()
+        .setRootNodes(rootNodes);
+
+    if (m_profile-&gt;idleTime())
+        result-&gt;setIdleTime(m_profile-&gt;idleTime());
+
+    return result.release();
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptProfileh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptProfile.h (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptProfile.h        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/WebCore/bindings/js/ScriptProfile.h        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2010 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2010, 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2010 Google Inc. All rights reserved.
</span><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -54,8 +54,7 @@
</span><span class="cx">     double idleTime() const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-    PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectForHead() const;
-    PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfileNode&gt; buildInspectorObjectForBottomUpHead() const;
</del><ins>+    PassRefPtr&lt;Inspector::TypeBuilder::Profiler::CPUProfile&gt; buildInspectorObject() const;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -64,7 +63,6 @@
</span><span class="cx">     RefPtr&lt;JSC::Profile&gt; m_profile;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ScriptProfile_h
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorHeapProfilerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -103,7 +103,6 @@
</span><span class="cx">     RefPtr&lt;Inspector::TypeBuilder::HeapProfiler::ProfileHeader&gt; header = Inspector::TypeBuilder::HeapProfiler::ProfileHeader::create()
</span><span class="cx">         .setUid(snapshot.uid())
</span><span class="cx">         .setTitle(snapshot.title());
</span><del>-    header-&gt;setMaxJSObjectId(snapshot.maxSnapshotJSObjectId());
</del><span class="cx">     return header.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorProfilerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorProfilerAgent.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorProfilerAgent.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/WebCore/inspector/InspectorProfilerAgent.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -186,7 +186,6 @@
</span><span class="cx">         .setTypeId(Inspector::TypeBuilder::Profiler::ProfileHeader::TypeId::HEAP)
</span><span class="cx">         .setUid(snapshot.uid())
</span><span class="cx">         .setTitle(snapshot.title());
</span><del>-    header-&gt;setMaxJSObjectId(snapshot.maxSnapshotJSObjectId());
</del><span class="cx">     return header.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -273,9 +272,8 @@
</span><span class="cx">         *errorString = &quot;Profile wasn't found&quot;;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    profileObject = Inspector::TypeBuilder::Profiler::CPUProfile::create();
-    profileObject-&gt;setHead(it-&gt;value-&gt;buildInspectorObjectForHead());
-    profileObject-&gt;setIdleTime(it-&gt;value-&gt;idleTime());
</del><ins>+
+    profileObject = it-&gt;value-&gt;buildInspectorObject();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorProfilerAgent::getHeapSnapshot(ErrorString* errorString, int rawUid)
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorScriptProfileNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/ScriptProfileNode.idl (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/ScriptProfileNode.idl        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/WebCore/inspector/ScriptProfileNode.idl        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -28,13 +28,18 @@
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx">     ImplementationLacksVTable
</span><span class="cx"> ] interface ScriptProfileNode {
</span><ins>+    readonly attribute unsigned long id;
+
</ins><span class="cx">     readonly attribute DOMString functionName;
</span><ins>+
</ins><span class="cx">     readonly attribute DOMString url;
</span><span class="cx">     readonly attribute unsigned long lineNumber;
</span><ins>+    readonly attribute unsigned long columnNumber;
+
</ins><span class="cx">     readonly attribute double totalTime;
</span><span class="cx">     readonly attribute double selfTime;
</span><ins>+
</ins><span class="cx">     readonly attribute unsigned long numberOfCalls;
</span><ins>+
</ins><span class="cx">     sequence&lt;ScriptProfileNode&gt; children();
</span><del>-    readonly attribute unsigned long callUID;
</del><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCoreinspectorTimelineRecordFactorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -254,7 +254,7 @@
</span><span class="cx"> 
</span><span class="cx"> void TimelineRecordFactory::appendProfile(InspectorObject* data, PassRefPtr&lt;ScriptProfile&gt; profile)
</span><span class="cx"> {
</span><del>-    data-&gt;setValue(&quot;profile&quot;, profile-&gt;buildInspectorObjectForHead());
</del><ins>+    data-&gt;setValue(ASCIILiteral(&quot;profile&quot;), profile-&gt;buildInspectorObject());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorprotocolProfilerjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/protocol/Profiler.json (163139 => 163140)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/protocol/Profiler.json        2014-01-31 01:34:31 UTC (rev 163139)
+++ trunk/Source/WebCore/inspector/protocol/Profiler.json        2014-01-31 01:34:54 UTC (rev 163140)
</span><span class="lines">@@ -6,26 +6,32 @@
</span><span class="cx">             &quot;type&quot;: &quot;object&quot;,
</span><span class="cx">             &quot;description&quot;: &quot;Profile header.&quot;,
</span><span class="cx">             &quot;properties&quot;: [
</span><del>-                { &quot;name&quot;: &quot;typeId&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;CPU&quot;, &quot;CSS&quot;, &quot;HEAP&quot;], &quot;description&quot;: &quot;Profile type name.&quot; },
</del><ins>+                { &quot;name&quot;: &quot;typeId&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;CPU&quot;, &quot;HEAP&quot;], &quot;description&quot;: &quot;Profile type name.&quot; },
</ins><span class="cx">                 { &quot;name&quot;: &quot;title&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Profile title.&quot; },
</span><del>-                { &quot;name&quot;: &quot;uid&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Unique identifier of the profile.&quot; },
-                { &quot;name&quot;: &quot;maxJSObjectId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Last seen JS object Id.&quot; }
</del><ins>+                { &quot;name&quot;: &quot;uid&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Unique identifier of the profile.&quot; }
</ins><span class="cx">             ]
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;id&quot;: &quot;CPUProfileNodeCall&quot;,
+            &quot;type&quot;: &quot;object&quot;,
+            &quot;description&quot;: &quot;CPU Profile call info. Holds time information for a specific call that happened on a node.&quot;,
+            &quot;properties&quot;: [
+                { &quot;name&quot;: &quot;startTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Start time for the call.&quot; },
+                { &quot;name&quot;: &quot;totalTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Total execution time for the call.&quot; }
+            ]
+        },
+        {
</ins><span class="cx">             &quot;id&quot;: &quot;CPUProfileNode&quot;,
</span><span class="cx">             &quot;type&quot;: &quot;object&quot;,
</span><span class="cx">             &quot;description&quot;: &quot;CPU Profile node. Holds callsite information, execution statistics and child nodes.&quot;,
</span><span class="cx">             &quot;properties&quot;: [
</span><del>-                { &quot;name&quot;: &quot;functionName&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Function name.&quot; },
-                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;URL.&quot; },
-                { &quot;name&quot;: &quot;lineNumber&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Line number.&quot; },
-                { &quot;name&quot;: &quot;totalTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Total execution time.&quot; },
-                { &quot;name&quot;: &quot;selfTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Self time.&quot; },
-                { &quot;name&quot;: &quot;numberOfCalls&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Number of calls.&quot; },
-                { &quot;name&quot;: &quot;callUID&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Call UID.&quot; },
-                { &quot;name&quot;: &quot;children&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;CPUProfileNode&quot; }, &quot;description&quot;: &quot;Child nodes.&quot; },
-                { &quot;name&quot;: &quot;id&quot;, &quot;optional&quot;: true, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Unique id of the node.&quot; }
</del><ins>+                { &quot;name&quot;: &quot;id&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Unique identifier for this call site.&quot; },
+                { &quot;name&quot;: &quot;calls&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;CPUProfileNodeCall&quot; }, &quot;description&quot;: &quot;Calls making up this node.&quot; },
+                { &quot;name&quot;: &quot;functionName&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Function name.&quot; },
+                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;URL.&quot; },
+                { &quot;name&quot;: &quot;lineNumber&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Line number.&quot; },
+                { &quot;name&quot;: &quot;columnNumber&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Column number.&quot; },
+                { &quot;name&quot;: &quot;children&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;CPUProfileNode&quot; }, &quot;optional&quot;: true, &quot;description&quot;: &quot;Child nodes.&quot; }
</ins><span class="cx">             ]
</span><span class="cx">         },
</span><span class="cx">         {
</span><span class="lines">@@ -33,9 +39,8 @@
</span><span class="cx">             &quot;type&quot;: &quot;object&quot;,
</span><span class="cx">             &quot;description&quot;: &quot;Profile.&quot;,
</span><span class="cx">             &quot;properties&quot;: [
</span><del>-                { &quot;name&quot;: &quot;head&quot;, &quot;$ref&quot;: &quot;CPUProfileNode&quot;, &quot;optional&quot;: true },
-                { &quot;name&quot;: &quot;idleTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true },
-                { &quot;name&quot;: &quot;samples&quot;, &quot;optional&quot;: true, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;type&quot;: &quot;integer&quot; }, &quot;description&quot;: &quot;Ids of samples top nodes.&quot; }
</del><ins>+                { &quot;name&quot;: &quot;rootNodes&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;CPUProfileNode&quot; }, &quot;description&quot;: &quot;Top level nodes in the stack.&quot; },
+                { &quot;name&quot;: &quot;idleTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true }
</ins><span class="cx">             ]
</span><span class="cx">         },
</span><span class="cx">         {
</span></span></pre>
</div>
</div>

</body>
</html>