Changeset 34310 in webkit for trunk/JavaScriptCore/profiler/ProfileNode.cpp
- Timestamp:
- Jun 2, 2008, 10:11:35 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/profiler/ProfileNode.cpp
r34060 r34310 59 59 ProfileNode::ProfileNode(const CallIdentifier& callIdentifier, ProfileNode* headNode, ProfileNode* parentNode) 60 60 : m_callIdentifier(callIdentifier) 61 , m_headNode(headNode) 62 , m_parentNode(parentNode) 61 , m_head(headNode) 62 , m_parent(parentNode) 63 , m_nextSibling(0) 63 64 , m_startTime(0.0) 64 , m_actualTotalTime 65 , m_visibleTotalTime 66 , m_actualSelfTime 67 , m_visibleSelfTime 65 , m_actualTotalTime(0.0) 66 , m_visibleTotalTime(0.0) 67 , m_actualSelfTime(0.0) 68 , m_visibleSelfTime(0.0) 68 69 , m_numberOfCalls(0) 69 70 , m_visible(true) 70 71 { 71 if (!m_head Node)72 m_head Node= this;72 if (!m_head) 73 m_head = this; 73 74 74 75 startTimer(); … … 84 85 } 85 86 86 m_children.append(ProfileNode::create(callIdentifier, m_headNode, this)); 87 RefPtr<ProfileNode> newChild = ProfileNode::create(callIdentifier, m_head, this); 88 if (m_children.size()) 89 m_children.last()->setNextSibling(newChild.get()); 90 m_children.append(newChild.release()); 87 91 return m_children.last().get(); 88 92 } … … 91 95 { 92 96 endAndRecordCall(); 93 return m_parent Node;97 return m_parent; 94 98 } 95 99 … … 98 102 RefPtr<ProfileNode> child = prpChild; 99 103 child->setParent(this); 104 if (m_children.size()) 105 m_children.last()->setNextSibling(child.get()); 100 106 m_children.append(child.release()); 101 107 } … … 131 137 m_actualSelfTime = m_actualTotalTime - m_actualSelfTime; 132 138 133 if (m_head Node== this && m_actualSelfTime) {139 if (m_head == this && m_actualSelfTime) { 134 140 ProfileNode* idleNode = willExecute(CallIdentifier(NonJSExecution, 0, 0)); 135 141 … … 155 161 std::sort(m_children.begin(), m_children.end(), totalTimeDescendingComparator); 156 162 157 for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) 158 (*currentChild)->sortTotalTimeDescending(); 163 unsigned size = m_children.size(); 164 for (unsigned i = 0; i < size; ++i) 165 m_children[i]->sortTotalTimeDescending(); 166 167 resetChildrensSiblings(); 159 168 } 160 169 … … 168 177 std::sort(m_children.begin(), m_children.end(), totalTimeAscendingComparator); 169 178 170 for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) 171 (*currentChild)->sortTotalTimeAscending(); 179 unsigned size = m_children.size(); 180 for (unsigned i = 0; i < size; ++i) 181 m_children[i]->sortTotalTimeAscending(); 182 183 resetChildrensSiblings(); 172 184 } 173 185 … … 181 193 std::sort(m_children.begin(), m_children.end(), selfTimeDescendingComparator); 182 194 183 for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) 184 (*currentChild)->sortSelfTimeDescending(); 195 unsigned size = m_children.size(); 196 for (unsigned i = 0; i < size; ++i) 197 m_children[i]->sortSelfTimeDescending(); 198 199 resetChildrensSiblings(); 185 200 } 186 201 … … 194 209 std::sort(m_children.begin(), m_children.end(), selfTimeAscendingComparator); 195 210 196 for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) 197 (*currentChild)->sortSelfTimeAscending(); 211 unsigned size = m_children.size(); 212 for (unsigned i = 0; i < size; ++i) 213 m_children[i]->sortSelfTimeAscending(); 214 215 resetChildrensSiblings(); 198 216 } 199 217 … … 207 225 std::sort(m_children.begin(), m_children.end(), callsDescendingComparator); 208 226 209 for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) 210 (*currentChild)->sortCallsDescending(); 227 unsigned size = m_children.size(); 228 for (unsigned i = 0; i < size; ++i) 229 m_children[i]->sortCallsDescending(); 230 231 resetChildrensSiblings(); 211 232 } 212 233 … … 220 241 std::sort(m_children.begin(), m_children.end(), callsAscendingComparator); 221 242 222 for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) 223 (*currentChild)->sortCallsAscending(); 243 unsigned size = m_children.size(); 244 for (unsigned i = 0; i < size; ++i) 245 m_children[i]->sortCallsAscending(); 246 247 resetChildrensSiblings(); 224 248 } 225 249 … … 233 257 std::sort(m_children.begin(), m_children.end(), functionNameDescendingComparator); 234 258 235 for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) 236 (*currentChild)->sortFunctionNameDescending(); 259 unsigned size = m_children.size(); 260 for (unsigned i = 0; i < size; ++i) 261 m_children[i]->sortFunctionNameDescending(); 262 263 resetChildrensSiblings(); 237 264 } 238 265 … … 246 273 std::sort(m_children.begin(), m_children.end(), functionNameAscendingComparator); 247 274 248 for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) 249 (*currentChild)->sortFunctionNameAscending(); 275 unsigned size = m_children.size(); 276 for (unsigned i = 0; i < size; ++i) 277 m_children[i]->sortFunctionNameAscending(); 278 279 resetChildrensSiblings(); 250 280 } 251 281 … … 321 351 } 322 352 353 void ProfileNode::resetChildrensSiblings() 354 { 355 unsigned size = m_children.size(); 356 for (unsigned i = 0; i < size; ++i) 357 m_children[i]->setNextSibling(i + 1 == size ? 0 : m_children[i + 1].get()); 358 } 359 323 360 #ifndef NDEBUG 324 361 void ProfileNode::debugPrintData(int indentLevel) const … … 328 365 printf(" "); 329 366 330 printf("%d SelfTime %.3fms/%.3f%% TotalTime %.3fms/%.3f%% VSelf %.3fms VTotal %.3fms Function Name %s Visible %s \n",367 printf("%d SelfTime %.3fms/%.3f%% TotalTime %.3fms/%.3f%% VSelf %.3fms VTotal %.3fms Function Name %s Visible %s Next Sibling %s\n", 331 368 m_numberOfCalls, m_actualSelfTime, selfPercent(), m_actualTotalTime, totalPercent(), 332 369 m_visibleSelfTime, m_visibleTotalTime, 333 functionName().UTF8String().c_str(), (m_visible ? "True" : "False")); 370 functionName().UTF8String().c_str(), (m_visible ? "True" : "False"), 371 m_nextSibling ? m_nextSibling->functionName().UTF8String().c_str() : ""); 334 372 335 373 ++indentLevel;
Note:
See TracChangeset
for help on using the changeset viewer.