<!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 <timothy@apple.com>
+
+ 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 <zalan@apple.com>
</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 == "(idle)")
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (!node.visible)
- return;
-
</del><span class="cx"> var space = "";
</span><span class="cx"> for (var i = 0; i < indentLevel; ++i)
</span><span class="cx"> space += " "
</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 <timothy@apple.com>
+
+ 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 <sam@webkit.org>
</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& callIdentifier = profileNode->callIdentifier();
- for (ProfileNode* currentNode = m_head.get(); currentNode; currentNode = currentNode->traverseNextNodePreOrder(processChildren))
- processChildren = currentNode->focus(callIdentifier);
-
- // Set the visible time of all nodes so that the %s display correctly.
- forEach(&ProfileNode::calculateVisibleTotalTime);
-}
-
-void Profile::exclude(const ProfileNode* profileNode)
-{
- if (!profileNode || !m_head)
- return;
-
- const CallIdentifier& callIdentifier = profileNode->callIdentifier();
-
- for (ProfileNode* currentNode = m_head.get(); currentNode; currentNode = currentNode->traverseNextNodePreOrder())
- currentNode->exclude(callIdentifier);
-
- // Set the visible time of the head so the %s display correctly.
- m_head->setVisibleTotalTime(m_head->totalTime() - m_head->selfTime());
- m_head->setVisibleSelfTime(0.0);
-}
-
-void Profile::restoreAll()
-{
- forEach(&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->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->setTotalTime(headSelfTime);
</span><span class="cx"> idleNode->setSelfTime(headSelfTime);
</span><del>- idleNode->setVisible(true);
</del><span class="cx">
</span><span class="cx"> m_head->setSelfTime(0.0);
</span><span class="cx"> m_head->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->parent()->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->parent())
</span><span class="cx"> , m_nextSibling(0)
</span><span class="cx"> , m_startTime(0.0)
</span><del>- , m_actualTotalTime(nodeToCopy->actualTotalTime())
- , m_visibleTotalTime(nodeToCopy->totalTime())
- , m_actualSelfTime(nodeToCopy->actualSelfTime())
- , m_visibleSelfTime(nodeToCopy->selfTime())
</del><ins>+ , m_totalTime(nodeToCopy->totalTime())
+ , m_selfTime(nodeToCopy->selfTime())
</ins><span class="cx"> , m_numberOfCalls(nodeToCopy->numberOfCalls())
</span><del>- , m_visible(nodeToCopy->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 < 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 && m_startTime == 0.0);
</ins><span class="cx">
</span><del>- ASSERT(m_actualSelfTime == 0.0 && 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 < m_children.size(); ++i)
</span><del>- m_actualSelfTime += m_children[i]->totalTime();
</del><ins>+ m_selfTime += m_children[i]->totalTime();
</ins><span class="cx">
</span><del>- ASSERT(m_actualSelfTime <= m_actualTotalTime);
- m_actualSelfTime = m_actualTotalTime - m_actualSelfTime;
- m_visibleSelfTime = m_actualSelfTime;
</del><ins>+ ASSERT(m_selfTime <= 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 && 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->nextSibling(); !next; next = nextParent->nextSibling()) {
- nextParent = nextParent->parent();
- if (!nextParent)
- return 0;
- }
-
- return next;
-}
-
-void ProfileNode::setTreeVisible(ProfileNode* node, bool visible)
-{
- ProfileNode* nodeParent = node->parent();
- ProfileNode* nodeSibling = node->nextSibling();
- node->setParent(0);
- node->setNextSibling(0);
-
- for (ProfileNode* currentNode = node; currentNode; currentNode = currentNode->traverseNextNodePreOrder())
- currentNode->setVisible(visible);
-
- node->setParent(nodeParent);
- node->setNextSibling(nodeSibling);
-}
-
-void ProfileNode::calculateVisibleTotalTime()
-{
- double sumOfVisibleChildrensTime = 0.0;
-
- for (unsigned i = 0; i < m_children.size(); ++i) {
- if (m_children[i]->visible())
- sumOfVisibleChildrensTime += m_children[i]->totalTime();
- }
-
- m_visibleTotalTime = m_visibleSelfTime + sumOfVisibleChildrensTime;
-}
-
-bool ProfileNode::focus(const CallIdentifier& callIdentifier)
-{
- if (!m_visible)
- return false;
-
- if (m_callIdentifier != callIdentifier) {
- m_visible = false;
- return true;
- }
-
- for (ProfileNode* currentParent = m_parent; currentParent; currentParent = currentParent->parent())
- currentParent->setVisible(true);
-
- return false;
-}
-
-void ProfileNode::exclude(const CallIdentifier& callIdentifier)
-{
- if (m_visible && m_callIdentifier == callIdentifier) {
- setTreeVisible(this, false);
-
- m_parent->setVisibleSelfTime(m_parent->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("Function Name %s %d SelfTime %.3fms/%.3f%% TotalTime %.3fms/%.3f%% VSelf %.3fms VTotal %.3fms Visible %s Next Sibling %s\n",
</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 ? "True" : "False"),
</span><span class="cx"> m_nextSibling ? m_nextSibling->functionName().utf8().data() : "");
</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 < indentLevel; ++i)
</span><span class="cx"> dataLogF(" ");
</span><span class="lines">@@ -344,7 +242,7 @@
</span><span class="cx"> dataLogF("%.0f %s\n", 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<ProfileNode> 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->totalTime() : totalTime())) * 100.0; }
- double selfPercent() const { return (m_visibleSelfTime / (m_head ? m_head->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->totalTime() : totalTime())) * 100.0; }
+ double selfPercent() const { return (m_selfTime / (m_head ? m_head->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<RefPtr<ProfileNode>>& 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<ProfileNode> prpChild);
</span><span class="cx"> void insertNode(PassRefPtr<ProfileNode> 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&);
- void exclude(const CallIdentifier&);
- 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<ProfileNode>* childrenBegin() { return m_children.begin(); }
- RefPtr<ProfileNode>* childrenEnd() { return m_children.end(); }
-
- // Sorting comparators
- static inline bool totalTimeDescendingComparator(const RefPtr<ProfileNode>& a, const RefPtr<ProfileNode>& b) { return a->totalTime() > b->totalTime(); }
- static inline bool totalTimeAscendingComparator(const RefPtr<ProfileNode>& a, const RefPtr<ProfileNode>& b) { return a->totalTime() < b->totalTime(); }
- static inline bool selfTimeDescendingComparator(const RefPtr<ProfileNode>& a, const RefPtr<ProfileNode>& b) { return a->selfTime() > b->selfTime(); }
- static inline bool selfTimeAscendingComparator(const RefPtr<ProfileNode>& a, const RefPtr<ProfileNode>& b) { return a->selfTime() < b->selfTime(); }
- static inline bool callsDescendingComparator(const RefPtr<ProfileNode>& a, const RefPtr<ProfileNode>& b) { return a->numberOfCalls() > b->numberOfCalls(); }
- static inline bool callsAscendingComparator(const RefPtr<ProfileNode>& a, const RefPtr<ProfileNode>& b) { return a->numberOfCalls() < b->numberOfCalls(); }
- static inline bool functionNameDescendingComparator(const RefPtr<ProfileNode>& a, const RefPtr<ProfileNode>& b) { return codePointCompareLessThan(b->functionName(), a->functionName()); }
- static inline bool functionNameAscendingComparator(const RefPtr<ProfileNode>& a, const RefPtr<ProfileNode>& b) { return codePointCompareLessThan(a->functionName(), b->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<RefPtr<ProfileNode>> 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 <timothy@apple.com>
+
+ 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 <sam@webkit.org>
</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->totalTime())
</span><span class="cx"> .setSelfTime(node->selfTime())
</span><span class="cx"> .setNumberOfCalls(node->numberOfCalls())
</span><del>- .setVisible(node->visible())
</del><span class="cx"> .setCallUID(node->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<ScriptProfileNode> 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"> { "name": "totalTime", "type": "number", "description": "Total execution time." },
</span><span class="cx"> { "name": "selfTime", "type": "number", "description": "Self time." },
</span><span class="cx"> { "name": "numberOfCalls", "type": "integer", "description": "Number of calls." },
</span><del>- { "name": "visible", "type": "boolean", "description": "Visibility." },
</del><span class="cx"> { "name": "callUID", "type": "number", "description": "Call UID." },
</span><span class="cx"> { "name": "children", "type": "array", "items": { "$ref": "CPUProfileNode" }, "description": "Child nodes." },
</span><span class="cx"> { "name": "id", "optional": true, "type": "integer", "description": "Unique id of the node." }
</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 <timothy@apple.com>
+
+ 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 <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> Remove FIXME in CSSKeywordCompletions.js about "inherit" 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"> { "name": "totalTime", "type": "number", "description": "Total execution time." },
</span><span class="cx"> { "name": "selfTime", "type": "number", "description": "Self time." },
</span><span class="cx"> { "name": "numberOfCalls", "type": "integer", "description": "Number of calls." },
</span><del>- { "name": "visible", "type": "boolean", "description": "Visibility." },
</del><span class="cx"> { "name": "callUID", "type": "number", "description": "Call UID." },
</span><span class="cx"> { "name": "children", "type": "array", "items": { "$ref": "CPUProfileNode" }, "description": "Child nodes." },
</span><span class="cx"> { "name": "id", "optional": true, "type": "integer", "description": "Unique id of the node." }
</span></span></pre>
</div>
</div>
</body>
</html>