<!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>[162796] 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/162796">162796</a></dd>
<dt>Author</dt> <dd>timothy@apple.com</dd>
<dt>Date</dt> <dd>2014-01-25 22:30:38 -0800 (Sat, 25 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove dead code from the JSC profiler.

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

Reviewed by Mark Lam.

Source/JavaScriptCore:

* profiler/Profile.cpp:
* profiler/Profile.h:
* profiler/ProfileGenerator.cpp:
(JSC::ProfileGenerator::stopProfiling):
* profiler/ProfileNode.cpp:
(JSC::ProfileNode::ProfileNode):
(JSC::ProfileNode::stopProfiling):
(JSC::ProfileNode::endAndRecordCall):
(JSC::ProfileNode::debugPrintData):
(JSC::ProfileNode::debugPrintDataSampleStyle):
* profiler/ProfileNode.h:
(JSC::ProfileNode::totalTime):
(JSC::ProfileNode::setTotalTime):
(JSC::ProfileNode::selfTime):
(JSC::ProfileNode::setSelfTime):
(JSC::ProfileNode::totalPercent):
(JSC::ProfileNode::selfPercent):
Remove support for things like focus and exclude. The Inspector does those in JS now.

Source/WebCore:

Passes existing tests in fast/profiler.

* bindings/js/ScriptProfile.cpp:
(WebCore::buildInspectorObjectFor): Remove visible.
* inspector/ScriptProfileNode.idl: Ditto.
* inspector/protocol/Profiler.json: Ditto.

Source/WebInspectorUI:

* Versions/Inspector-iOS-7.0.json: Remove visible from CPUProfileNode.

LayoutTests:

* fast/profiler/resources/profiler-test-JS-resources.js:
(printProfileNodeWithoutTime): Don't use visible. It was always true.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastprofilerresourcesprofilertestJSresourcesjs">trunk/LayoutTests/fast/profiler/resources/profiler-test-JS-resources.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</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="#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="#trunkSourceWebCoreinspectorScriptProfileNodeidl">trunk/Source/WebCore/inspector/ScriptProfileNode.idl</a></li>
<li><a href="#trunkSourceWebCoreinspectorprotocolProfilerjson">trunk/Source/WebCore/inspector/protocol/Profiler.json</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIVersionsInspectoriOS70json">trunk/Source/WebInspectorUI/Versions/Inspector-iOS-7.0.json</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/LayoutTests/ChangeLog        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2014-01-25  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Remove dead code from the JSC profiler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=127643
+
+        Reviewed by Mark Lam.
+
+        * fast/profiler/resources/profiler-test-JS-resources.js:
+        (printProfileNodeWithoutTime): Don't use visible. It was always true.
+
</ins><span class="cx"> 2014-01-25  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Subpixel layout: RenderInline is not centered when child RenderTextControl's innerTextRenderer needs bias centering.
</span></span></pre></div>
<a id="trunkLayoutTestsfastprofilerresourcesprofilertestJSresourcesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/profiler/resources/profiler-test-JS-resources.js (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/profiler/resources/profiler-test-JS-resources.js        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/LayoutTests/fast/profiler/resources/profiler-test-JS-resources.js        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -79,9 +79,6 @@
</span><span class="cx">     if (node.functionName == &quot;(idle)&quot;)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!node.visible)
-        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></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -1,3 +1,30 @@
</span><ins>+2014-01-25  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Remove dead code from the JSC profiler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=127643
+
+        Reviewed by Mark Lam.
+
+        * profiler/Profile.cpp:
+        * profiler/Profile.h:
+        * profiler/ProfileGenerator.cpp:
+        (JSC::ProfileGenerator::stopProfiling):
+        * profiler/ProfileNode.cpp:
+        (JSC::ProfileNode::ProfileNode):
+        (JSC::ProfileNode::stopProfiling):
+        (JSC::ProfileNode::endAndRecordCall):
+        (JSC::ProfileNode::debugPrintData):
+        (JSC::ProfileNode::debugPrintDataSampleStyle):
+        * profiler/ProfileNode.h:
+        (JSC::ProfileNode::totalTime):
+        (JSC::ProfileNode::setTotalTime):
+        (JSC::ProfileNode::selfTime):
+        (JSC::ProfileNode::setSelfTime):
+        (JSC::ProfileNode::totalPercent):
+        (JSC::ProfileNode::selfPercent):
+        Remove support for things like focus and exclude. The Inspector does those in JS now.
+
</ins><span class="cx"> 2014-01-25  Sam Weinig  &lt;sam@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove unused support for DRAGGABLE_REGION
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/Profile.cpp (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/Profile.cpp        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/JavaScriptCore/profiler/Profile.cpp        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -65,40 +65,6 @@
</span><span class="cx">     } 
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Profile::focus(const ProfileNode* profileNode)
-{
-    if (!profileNode || !m_head)
-        return;
-
-    bool processChildren;
-    const CallIdentifier&amp; callIdentifier = profileNode-&gt;callIdentifier();
-    for (ProfileNode* currentNode = m_head.get(); currentNode; currentNode = currentNode-&gt;traverseNextNodePreOrder(processChildren))
-        processChildren = currentNode-&gt;focus(callIdentifier);
-
-    // Set the visible time of all nodes so that the %s display correctly.
-    forEach(&amp;ProfileNode::calculateVisibleTotalTime);
-}
-
-void Profile::exclude(const ProfileNode* profileNode)
-{
-    if (!profileNode || !m_head)
-        return;
-
-    const CallIdentifier&amp; callIdentifier = profileNode-&gt;callIdentifier();
-
-    for (ProfileNode* currentNode = m_head.get(); currentNode; currentNode = currentNode-&gt;traverseNextNodePreOrder())
-        currentNode-&gt;exclude(callIdentifier);
-
-    // Set the visible time of the head so the %s display correctly.
-    m_head-&gt;setVisibleTotalTime(m_head-&gt;totalTime() - m_head-&gt;selfTime());
-    m_head-&gt;setVisibleSelfTime(0.0);
-}
-
-void Profile::restoreAll()
-{
-    forEach(&amp;ProfileNode::restore);
-}
-
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> void Profile::debugPrintData() const
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/Profile.h (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/Profile.h        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/JavaScriptCore/profiler/Profile.h        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -44,12 +44,8 @@
</span><span class="cx">         double totalTime() const { return m_head-&gt;totalTime(); }
</span><span class="cx">         unsigned int uid() const { return m_uid; }
</span><span class="cx"> 
</span><del>-        JS_EXPORT_PRIVATE void forEach(void (ProfileNode::*)());
</del><ins>+        void forEach(void (ProfileNode::*)());
</ins><span class="cx"> 
</span><del>-        JS_EXPORT_PRIVATE void focus(const ProfileNode*);
-        JS_EXPORT_PRIVATE void exclude(const ProfileNode*);
-        JS_EXPORT_PRIVATE void restoreAll();
-
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx">         void debugPrintData() const;
</span><span class="cx">         void debugPrintDataSampleStyle() const;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -178,14 +178,13 @@
</span><span class="cx"> 
</span><span class="cx">         idleNode-&gt;setTotalTime(headSelfTime);
</span><span class="cx">         idleNode-&gt;setSelfTime(headSelfTime);
</span><del>-        idleNode-&gt;setVisible(true);
</del><span class="cx"> 
</span><span class="cx">         m_head-&gt;setSelfTime(0.0);
</span><span class="cx">         m_head-&gt;addChild(idleNode.release());
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// The console.ProfileGenerator that started this ProfileGenerator will be the first child.
</del><ins>+// The console.profile that started this ProfileGenerator will be the first child.
</ins><span class="cx"> void ProfileGenerator::removeProfileStart()
</span><span class="cx"> {
</span><span class="cx">     ProfileNode* currentNode = 0;
</span><span class="lines">@@ -200,7 +199,7 @@
</span><span class="cx">     currentNode-&gt;parent()-&gt;removeChild(currentNode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// The console.ProfileGeneratorEnd that stopped this ProfileGenerator will be the last child.
</del><ins>+// The console.profileEnd that stopped this ProfileGenerator will be the last child.
</ins><span class="cx"> void ProfileGenerator::removeProfileEnd()
</span><span class="cx"> {
</span><span class="cx">     ProfileNode* currentNode = 0;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfileNode.cpp (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfileNode.cpp        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/JavaScriptCore/profiler/ProfileNode.cpp        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -63,12 +63,9 @@
</span><span class="cx">     , m_parent(parentNode)
</span><span class="cx">     , m_nextSibling(0)
</span><span class="cx">     , m_startTime(0.0)
</span><del>-    , m_actualTotalTime(0.0)
-    , m_visibleTotalTime(0.0)
-    , m_actualSelfTime(0.0)
-    , m_visibleSelfTime(0.0)
</del><ins>+    , m_totalTime(0.0)
+    , m_selfTime(0.0)
</ins><span class="cx">     , m_numberOfCalls(0)
</span><del>-    , m_visible(true)
</del><span class="cx"> {
</span><span class="cx">     startTimer();
</span><span class="cx"> }
</span><span class="lines">@@ -80,12 +77,9 @@
</span><span class="cx">     , m_parent(nodeToCopy-&gt;parent())
</span><span class="cx">     , m_nextSibling(0)
</span><span class="cx">     , m_startTime(0.0)
</span><del>-    , m_actualTotalTime(nodeToCopy-&gt;actualTotalTime())
-    , m_visibleTotalTime(nodeToCopy-&gt;totalTime())
-    , m_actualSelfTime(nodeToCopy-&gt;actualSelfTime())
-    , m_visibleSelfTime(nodeToCopy-&gt;selfTime())
</del><ins>+    , m_totalTime(nodeToCopy-&gt;totalTime())
+    , m_selfTime(nodeToCopy-&gt;selfTime())
</ins><span class="cx">     , m_numberOfCalls(nodeToCopy-&gt;numberOfCalls())
</span><del>-    , m_visible(nodeToCopy-&gt;visible())
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -120,19 +114,6 @@
</span><span class="cx">     m_children.append(child.release());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ProfileNode* ProfileNode::findChild(ProfileNode* node) const
-{
-    if (!node)
-        return 0;
-
-    for (size_t i = 0; i &lt; m_children.size(); ++i) {
-        if (*node == m_children[i].get())
-            return m_children[i].get();
-    }
-
-    return 0;
-}
-
</del><span class="cx"> void ProfileNode::removeChild(ProfileNode* node)
</span><span class="cx"> {
</span><span class="cx">     if (!node)
</span><span class="lines">@@ -164,17 +145,14 @@
</span><span class="cx">     if (m_startTime)
</span><span class="cx">         endAndRecordCall();
</span><span class="cx"> 
</span><del>-    m_visibleTotalTime = m_actualTotalTime;
</del><ins>+    ASSERT(m_selfTime == 0.0 &amp;&amp; m_startTime == 0.0);
</ins><span class="cx"> 
</span><del>-    ASSERT(m_actualSelfTime == 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><del>-        m_actualSelfTime += m_children[i]-&gt;totalTime();
</del><ins>+        m_selfTime += m_children[i]-&gt;totalTime();
</ins><span class="cx"> 
</span><del>-    ASSERT(m_actualSelfTime &lt;= m_actualTotalTime);
-    m_actualSelfTime = m_actualTotalTime - m_actualSelfTime;
-    m_visibleSelfTime = m_actualSelfTime;
</del><ins>+    ASSERT(m_selfTime &lt;= m_totalTime);
+    m_selfTime = m_totalTime - m_selfTime;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ProfileNode* ProfileNode::traverseNextNodePostOrder() const
</span><span class="lines">@@ -187,89 +165,9 @@
</span><span class="cx">     return next;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ProfileNode* ProfileNode::traverseNextNodePreOrder(bool processChildren) const
-{
-    if (processChildren &amp;&amp; m_children.size())
-        return m_children[0].get();
-
-    if (m_nextSibling)
-        return m_nextSibling;
-
-    ProfileNode* nextParent = m_parent;
-    if (!nextParent)
-        return 0;
-
-    ProfileNode* next;
-    for (next = m_parent-&gt;nextSibling(); !next; next = nextParent-&gt;nextSibling()) {
-        nextParent = nextParent-&gt;parent();
-        if (!nextParent)
-            return 0;
-    }
-
-    return next;
-}
-
-void ProfileNode::setTreeVisible(ProfileNode* node, bool visible)
-{
-    ProfileNode* nodeParent = node-&gt;parent();
-    ProfileNode* nodeSibling = node-&gt;nextSibling();
-    node-&gt;setParent(0);
-    node-&gt;setNextSibling(0);
-
-    for (ProfileNode* currentNode = node; currentNode; currentNode = currentNode-&gt;traverseNextNodePreOrder())
-        currentNode-&gt;setVisible(visible);
-
-    node-&gt;setParent(nodeParent);
-    node-&gt;setNextSibling(nodeSibling);
-}
-
-void ProfileNode::calculateVisibleTotalTime()
-{
-    double sumOfVisibleChildrensTime = 0.0;
-
-    for (unsigned i = 0; i &lt; m_children.size(); ++i) {
-        if (m_children[i]-&gt;visible())
-            sumOfVisibleChildrensTime += m_children[i]-&gt;totalTime();
-    }
-
-    m_visibleTotalTime = m_visibleSelfTime + sumOfVisibleChildrensTime;
-}
-
-bool ProfileNode::focus(const CallIdentifier&amp; callIdentifier)
-{
-    if (!m_visible)
-        return false;
-
-    if (m_callIdentifier != callIdentifier) {
-        m_visible = false;
-        return true;
-    }
-
-    for (ProfileNode* currentParent = m_parent; currentParent; currentParent = currentParent-&gt;parent())
-        currentParent-&gt;setVisible(true);
-
-    return false;
-}
-
-void ProfileNode::exclude(const CallIdentifier&amp; callIdentifier)
-{
-    if (m_visible &amp;&amp; m_callIdentifier == callIdentifier) {
-        setTreeVisible(this, false);
-
-        m_parent-&gt;setVisibleSelfTime(m_parent-&gt;selfTime() + m_visibleTotalTime);
-    }
-}
-
-void ProfileNode::restore()
-{
-    m_visibleTotalTime = m_actualTotalTime;
-    m_visibleSelfTime = m_actualSelfTime;
-    m_visible = true;
-}
-
</del><span class="cx"> void ProfileNode::endAndRecordCall()
</span><span class="cx"> {
</span><del>-    m_actualTotalTime += m_startTime ? getCount() - m_startTime : 0.0;
</del><ins>+    m_totalTime += m_startTime ? getCount() - m_startTime : 0.0;
</ins><span class="cx">     m_startTime = 0.0;
</span><span class="cx"> 
</span><span class="cx">     ++m_numberOfCalls;
</span><span class="lines">@@ -297,7 +195,7 @@
</span><span class="cx"> 
</span><span class="cx">     dataLogF(&quot;Function Name %s %d SelfTime %.3fms/%.3f%% TotalTime %.3fms/%.3f%% VSelf %.3fms VTotal %.3fms Visible %s Next Sibling %s\n&quot;,
</span><span class="cx">         functionName().utf8().data(), 
</span><del>-        m_numberOfCalls, m_actualSelfTime, selfPercent(), m_actualTotalTime, totalPercent(),
</del><ins>+        m_numberOfCalls, m_selfTime, selfPercent(), m_totalTime, totalPercent(),
</ins><span class="cx">         m_visibleSelfTime, m_visibleTotalTime, 
</span><span class="cx">         (m_visible ? &quot;True&quot; : &quot;False&quot;),
</span><span class="cx">         m_nextSibling ? m_nextSibling-&gt;functionName().utf8().data() : &quot;&quot;);
</span><span class="lines">@@ -316,7 +214,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Print function names
</span><span class="cx">     const char* name = functionName().utf8().data();
</span><del>-    double sampleCount = m_actualTotalTime * 1000;
</del><ins>+    double sampleCount = m_totalTime * 1000;
</ins><span class="cx">     if (indentLevel) {
</span><span class="cx">         for (int i = 0; i &lt; indentLevel; ++i)
</span><span class="cx">             dataLogF(&quot;  &quot;);
</span><span class="lines">@@ -344,7 +242,7 @@
</span><span class="cx">         dataLogF(&quot;%.0f %s\n&quot;, sampleCount - sumOfChildrensCount, functionName().utf8().data());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return m_actualTotalTime;
</del><ins>+    return m_totalTime;
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfileNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfileNode.h (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfileNode.h        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/JavaScriptCore/profiler/ProfileNode.h        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx">         {
</span><span class="cx">             return adoptRef(new ProfileNode(callerCallFrame, callIdentifier, headNode, parentNode));
</span><span class="cx">         }
</span><ins>+
</ins><span class="cx">         static PassRefPtr&lt;ProfileNode&gt; create(ExecState* callerCallFrame, ProfileNode* headNode, ProfileNode* node)
</span><span class="cx">         {
</span><span class="cx">             return adoptRef(new ProfileNode(callerCallFrame, headNode, node));
</span><span class="lines">@@ -71,56 +72,38 @@
</span><span class="cx">         // Relationships
</span><span class="cx">         ProfileNode* head() const { return m_head; }
</span><span class="cx">         void setHead(ProfileNode* head) { m_head = head; }
</span><ins>+
</ins><span class="cx">         ProfileNode* parent() const { return m_parent; }
</span><span class="cx">         void setParent(ProfileNode* parent) { m_parent = parent; }
</span><ins>+
</ins><span class="cx">         ProfileNode* nextSibling() const { return m_nextSibling; }
</span><span class="cx">         void setNextSibling(ProfileNode* nextSibling) { m_nextSibling = nextSibling; }
</span><span class="cx"> 
</span><span class="cx">         // Time members
</span><span class="cx">         double startTime() const { return m_startTime; }
</span><span class="cx">         void setStartTime(double startTime) { m_startTime = startTime; }
</span><del>-        double totalTime() const { return m_visibleTotalTime; }
-        double actualTotalTime() const { return m_actualTotalTime; }
-        void setTotalTime(double time) { m_actualTotalTime = time; m_visibleTotalTime = time; }
-        void setActualTotalTime(double time) { m_actualTotalTime = time; }
-        void setVisibleTotalTime(double time) { m_visibleTotalTime = time; }
-        double selfTime() const { return m_visibleSelfTime; }
-        double actualSelfTime() const { return m_actualSelfTime; }
-        void setSelfTime(double time) {m_actualSelfTime = time; m_visibleSelfTime = time; }
-        void setActualSelfTime(double time) { m_actualSelfTime = time; }
-        void setVisibleSelfTime(double time) { m_visibleSelfTime = time; }
</del><span class="cx"> 
</span><del>-        double totalPercent() const { return (m_visibleTotalTime / (m_head ? m_head-&gt;totalTime() : totalTime())) * 100.0; }
-        double selfPercent() const { return (m_visibleSelfTime / (m_head ? m_head-&gt;totalTime() : totalTime())) * 100.0; }
</del><ins>+        double totalTime() const { return m_totalTime; }
+        void setTotalTime(double time) { m_totalTime = time; }
</ins><span class="cx"> 
</span><ins>+        double selfTime() const { return m_selfTime; }
+        void setSelfTime(double time) { m_selfTime = time; }
+
+        double totalPercent() const { return (m_totalTime / (m_head ? m_head-&gt;totalTime() : totalTime())) * 100.0; }
+        double selfPercent() const { return (m_selfTime / (m_head ? m_head-&gt;totalTime() : totalTime())) * 100.0; }
+
</ins><span class="cx">         unsigned numberOfCalls() const { return m_numberOfCalls; }
</span><del>-        void setNumberOfCalls(unsigned number) { m_numberOfCalls = number; }
</del><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="cx">         ProfileNode* firstChild() const { return m_children.size() ? m_children.first().get() : 0; }
</span><span class="cx">         ProfileNode* lastChild() const { return m_children.size() ? m_children.last().get() : 0; }
</span><del>-        ProfileNode* findChild(ProfileNode*) const;
</del><span class="cx">         void removeChild(ProfileNode*);
</span><span class="cx">         void addChild(PassRefPtr&lt;ProfileNode&gt; prpChild);
</span><span class="cx">         void insertNode(PassRefPtr&lt;ProfileNode&gt; prpNode);
</span><span class="cx"> 
</span><del>-        // Visiblity
-        bool visible() const { return m_visible; }
-        void setVisible(bool visible) { m_visible = visible; }
-
-        static void setTreeVisible(ProfileNode*, bool visible);
-
-        // Sorting
</del><span class="cx">         ProfileNode* traverseNextNodePostOrder() const;
</span><del>-        ProfileNode* traverseNextNodePreOrder(bool processChildren = true) const;
</del><span class="cx"> 
</span><del>-        // Views
-        void calculateVisibleTotalTime();
-        bool focus(const CallIdentifier&amp;);
-        void exclude(const CallIdentifier&amp;);
-        void restore();
-
</del><span class="cx">         void endAndRecordCall();
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><span class="lines">@@ -138,19 +121,6 @@
</span><span class="cx">         void startTimer();
</span><span class="cx">         void resetChildrensSiblings();
</span><span class="cx"> 
</span><del>-        RefPtr&lt;ProfileNode&gt;* childrenBegin() { return m_children.begin(); }
-        RefPtr&lt;ProfileNode&gt;* childrenEnd() { return m_children.end(); }
-
-        // Sorting comparators
-        static inline bool totalTimeDescendingComparator(const RefPtr&lt;ProfileNode&gt;&amp; a, const RefPtr&lt;ProfileNode&gt;&amp; b) { return a-&gt;totalTime() &gt; b-&gt;totalTime(); }
-        static inline bool totalTimeAscendingComparator(const RefPtr&lt;ProfileNode&gt;&amp; a, const RefPtr&lt;ProfileNode&gt;&amp; b) { return a-&gt;totalTime() &lt; b-&gt;totalTime(); }
-        static inline bool selfTimeDescendingComparator(const RefPtr&lt;ProfileNode&gt;&amp; a, const RefPtr&lt;ProfileNode&gt;&amp; b) { return a-&gt;selfTime() &gt; b-&gt;selfTime(); }
-        static inline bool selfTimeAscendingComparator(const RefPtr&lt;ProfileNode&gt;&amp; a, const RefPtr&lt;ProfileNode&gt;&amp; b) { return a-&gt;selfTime() &lt; b-&gt;selfTime(); }
-        static inline bool callsDescendingComparator(const RefPtr&lt;ProfileNode&gt;&amp; a, const RefPtr&lt;ProfileNode&gt;&amp; b) { return a-&gt;numberOfCalls() &gt; b-&gt;numberOfCalls(); }
-        static inline bool callsAscendingComparator(const RefPtr&lt;ProfileNode&gt;&amp; a, const RefPtr&lt;ProfileNode&gt;&amp; b) { return a-&gt;numberOfCalls() &lt; b-&gt;numberOfCalls(); }
-        static inline bool functionNameDescendingComparator(const RefPtr&lt;ProfileNode&gt;&amp; a, const RefPtr&lt;ProfileNode&gt;&amp; b) { return codePointCompareLessThan(b-&gt;functionName(), a-&gt;functionName()); }
-        static inline bool functionNameAscendingComparator(const RefPtr&lt;ProfileNode&gt;&amp; a, const RefPtr&lt;ProfileNode&gt;&amp; b) { return codePointCompareLessThan(a-&gt;functionName(), b-&gt;functionName()); }
-
</del><span class="cx">         ExecState* m_callerCallFrame;
</span><span class="cx">         CallIdentifier m_callIdentifier;
</span><span class="cx">         ProfileNode* m_head;
</span><span class="lines">@@ -158,14 +128,10 @@
</span><span class="cx">         ProfileNode* m_nextSibling;
</span><span class="cx"> 
</span><span class="cx">         double m_startTime;
</span><del>-        double m_actualTotalTime;
-        double m_visibleTotalTime;
-        double m_actualSelfTime;
-        double m_visibleSelfTime;
</del><ins>+        double m_totalTime;
+        double m_selfTime;
</ins><span class="cx">         unsigned m_numberOfCalls;
</span><span class="cx"> 
</span><del>-        bool m_visible;
-
</del><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 (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/WebCore/ChangeLog        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2014-01-25  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Remove dead code from the JSC profiler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=127643
+
+        Reviewed by Mark Lam.
+
+        Passes existing tests in fast/profiler.
+
+        * bindings/js/ScriptProfile.cpp:
+        (WebCore::buildInspectorObjectFor): Remove visible.
+        * inspector/ScriptProfileNode.idl: Ditto.
+        * inspector/protocol/Profiler.json: Ditto.
+
</ins><span class="cx"> 2014-01-25  Sam Weinig  &lt;sam@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove unused support for DRAGGABLE_REGION
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptProfilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptProfile.cpp (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptProfile.cpp        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/WebCore/bindings/js/ScriptProfile.cpp        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -90,7 +90,6 @@
</span><span class="cx">         .setTotalTime(node-&gt;totalTime())
</span><span class="cx">         .setSelfTime(node-&gt;selfTime())
</span><span class="cx">         .setNumberOfCalls(node-&gt;numberOfCalls())
</span><del>-        .setVisible(node-&gt;visible())
</del><span class="cx">         .setCallUID(node-&gt;callIdentifier().hash())
</span><span class="cx">         .setChildren(children.release());
</span><span class="cx">     return result.release();
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorScriptProfileNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/ScriptProfileNode.idl (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/ScriptProfileNode.idl        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/WebCore/inspector/ScriptProfileNode.idl        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -36,7 +36,6 @@
</span><span class="cx">     readonly attribute double selfTime;
</span><span class="cx">     readonly attribute unsigned long numberOfCalls;
</span><span class="cx">     sequence&lt;ScriptProfileNode&gt; children();
</span><del>-    readonly attribute boolean visible;
</del><span class="cx">     readonly attribute unsigned long callUID;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorprotocolProfilerjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/protocol/Profiler.json (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/protocol/Profiler.json        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/WebCore/inspector/protocol/Profiler.json        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -23,7 +23,6 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;totalTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Total execution time.&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;selfTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Self time.&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;numberOfCalls&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Number of calls.&quot; },
</span><del>-                { &quot;name&quot;: &quot;visible&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Visibility.&quot; },
</del><span class="cx">                 { &quot;name&quot;: &quot;callUID&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Call UID.&quot; },
</span><span class="cx">                 { &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; },
</span><span class="cx">                 { &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; }
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/WebInspectorUI/ChangeLog        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2014-01-25  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Remove dead code from the JSC profiler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=127643
+
+        Reviewed by Mark Lam.
+
+        * Versions/Inspector-iOS-7.0.json: Remove visible from CPUProfileNode.
+
</ins><span class="cx"> 2014-01-25  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove FIXME in CSSKeywordCompletions.js about &quot;inherit&quot; keyword
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIVersionsInspectoriOS70json"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/Versions/Inspector-iOS-7.0.json (162795 => 162796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/Versions/Inspector-iOS-7.0.json        2014-01-26 06:25:55 UTC (rev 162795)
+++ trunk/Source/WebInspectorUI/Versions/Inspector-iOS-7.0.json        2014-01-26 06:30:38 UTC (rev 162796)
</span><span class="lines">@@ -2828,7 +2828,6 @@
</span><span class="cx">                     { &quot;name&quot;: &quot;totalTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Total execution time.&quot; },
</span><span class="cx">                     { &quot;name&quot;: &quot;selfTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Self time.&quot; },
</span><span class="cx">                     { &quot;name&quot;: &quot;numberOfCalls&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Number of calls.&quot; },
</span><del>-                    { &quot;name&quot;: &quot;visible&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Visibility.&quot; },
</del><span class="cx">                     { &quot;name&quot;: &quot;callUID&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Call UID.&quot; },
</span><span class="cx">                     { &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; },
</span><span class="cx">                     { &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; }
</span></span></pre>
</div>
</div>

</body>
</html>