ruby-prof 0.16.2 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +15 -0
  3. data/README.rdoc +36 -5
  4. data/bin/ruby-prof +7 -2
  5. data/doc/LICENSE.html +2 -1
  6. data/doc/README_rdoc.html +42 -8
  7. data/doc/Rack.html +2 -1
  8. data/doc/Rack/RubyProf.html +25 -18
  9. data/doc/Rack/RubyProf/RackProfiler.html +343 -0
  10. data/doc/RubyProf.html +14 -2
  11. data/doc/RubyProf/AbstractPrinter.html +91 -12
  12. data/doc/RubyProf/AggregateCallInfo.html +2 -1
  13. data/doc/RubyProf/CallInfo.html +18 -78
  14. data/doc/RubyProf/CallInfoPrinter.html +2 -1
  15. data/doc/RubyProf/CallInfoVisitor.html +2 -1
  16. data/doc/RubyProf/CallStackPrinter.html +35 -29
  17. data/doc/RubyProf/CallTreePrinter.html +98 -14
  18. data/doc/RubyProf/Cmd.html +11 -5
  19. data/doc/RubyProf/DeprecationWarnings.html +148 -0
  20. data/doc/RubyProf/DotPrinter.html +2 -1
  21. data/doc/RubyProf/FlatPrinter.html +2 -1
  22. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +7 -5
  23. data/doc/RubyProf/GraphHtmlPrinter.html +18 -12
  24. data/doc/RubyProf/GraphPrinter.html +2 -1
  25. data/doc/RubyProf/MethodInfo.html +19 -88
  26. data/doc/RubyProf/MultiPrinter.html +231 -17
  27. data/doc/RubyProf/Profile.html +184 -39
  28. data/doc/RubyProf/Profile/ExcludeCommonMethods.html +411 -0
  29. data/doc/RubyProf/Profile/LegacyMethodElimination.html +158 -0
  30. data/doc/RubyProf/ProfileTask.html +2 -1
  31. data/doc/RubyProf/Thread.html +4 -39
  32. data/doc/created.rid +21 -19
  33. data/doc/css/fonts.css +6 -6
  34. data/doc/examples/flat_txt.html +2 -1
  35. data/doc/examples/graph_html.html +2 -1
  36. data/doc/examples/graph_txt.html +2 -1
  37. data/doc/index.html +47 -7
  38. data/doc/js/darkfish.js +7 -7
  39. data/doc/js/search_index.js +1 -1
  40. data/doc/js/search_index.js.gz +0 -0
  41. data/doc/js/searcher.js +1 -0
  42. data/doc/js/searcher.js.gz +0 -0
  43. data/doc/table_of_contents.html +190 -80
  44. data/ext/ruby_prof/extconf.rb +4 -0
  45. data/ext/ruby_prof/rp_call_info.c +19 -1
  46. data/ext/ruby_prof/rp_call_info.h +8 -3
  47. data/ext/ruby_prof/rp_method.c +282 -57
  48. data/ext/ruby_prof/rp_method.h +28 -5
  49. data/ext/ruby_prof/rp_stack.c +69 -24
  50. data/ext/ruby_prof/rp_stack.h +21 -9
  51. data/ext/ruby_prof/rp_thread.c +4 -1
  52. data/ext/ruby_prof/ruby_prof.c +142 -39
  53. data/ext/ruby_prof/ruby_prof.h +3 -0
  54. data/lib/ruby-prof.rb +10 -0
  55. data/lib/ruby-prof/call_info.rb +0 -11
  56. data/lib/ruby-prof/method_info.rb +4 -12
  57. data/lib/ruby-prof/printers/abstract_printer.rb +19 -1
  58. data/lib/ruby-prof/printers/call_info_printer.rb +1 -1
  59. data/lib/ruby-prof/printers/call_stack_printer.rb +9 -4
  60. data/lib/ruby-prof/printers/call_tree_printer.rb +15 -2
  61. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +23 -4
  62. data/lib/ruby-prof/printers/graph_html_printer.rb +10 -5
  63. data/lib/ruby-prof/printers/graph_printer.rb +2 -2
  64. data/lib/ruby-prof/printers/multi_printer.rb +44 -18
  65. data/lib/ruby-prof/profile.rb +13 -42
  66. data/lib/ruby-prof/profile/exclude_common_methods.rb +201 -0
  67. data/lib/ruby-prof/profile/legacy_method_elimination.rb +49 -0
  68. data/lib/ruby-prof/rack.rb +130 -51
  69. data/lib/ruby-prof/thread.rb +0 -6
  70. data/lib/ruby-prof/version.rb +1 -1
  71. data/ruby-prof.gemspec +4 -3
  72. data/test/aggregate_test.rb +1 -1
  73. data/test/exclude_methods_test.rb +146 -0
  74. data/test/line_number_test.rb +12 -3
  75. data/test/multi_printer_test.rb +23 -2
  76. data/test/no_method_class_test.rb +1 -1
  77. data/test/printers_test.rb +21 -1
  78. data/test/rack_test.rb +64 -0
  79. data/test/recursive_test.rb +15 -15
  80. data/test/test_helper.rb +11 -0
  81. metadata +20 -13
@@ -8,6 +8,7 @@
8
8
 
9
9
  <script type="text/javascript">
10
10
  var rdoc_rel_prefix = "./";
11
+ var index_rel_prefix = "./";
11
12
  </script>
12
13
 
13
14
  <script src="./js/jquery.js"></script>
@@ -56,7 +57,18 @@
56
57
 
57
58
 
58
59
 
60
+ <div id="extends-section" class="nav-section">
61
+ <h3>Extended With Modules</h3>
62
+
63
+ <ul class="link-list">
59
64
 
65
+
66
+ <li><a class="extend" href="RubyProf/DeprecationWarnings.html">RubyProf::DeprecationWarnings</a>
67
+
68
+
69
+ </ul>
70
+ </div>
71
+
60
72
  <!-- Method Quickref -->
61
73
  <div id="method-list-section" class="nav-section">
62
74
  <h3>Methods</h3>
@@ -297,7 +309,7 @@ environment variable</p>
297
309
 
298
310
 
299
311
  <div class="method-source-code" id="figure_measure_mode-source">
300
- <pre><span class="ruby-comment"># File lib/ruby-prof.rb, line 35</span>
312
+ <pre><span class="ruby-comment"># File lib/ruby-prof.rb, line 45</span>
301
313
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">figure_measure_mode</span>
302
314
  <span class="ruby-keyword">case</span> <span class="ruby-constant">ENV</span>[<span class="ruby-string">&quot;RUBY_PROF_MEASURE_MODE&quot;</span>]
303
315
  <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;wall&quot;</span>, <span class="ruby-string">&quot;wall_time&quot;</span>
@@ -956,7 +968,7 @@ requires a patched Ruby interpreter.*/</p>
956
968
 
957
969
  <footer id="validator-badges" role="contentinfo">
958
970
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
959
- <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.2.
971
+ <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
960
972
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
961
973
  </footer>
962
974
 
@@ -8,6 +8,7 @@
8
8
 
9
9
  <script type="text/javascript">
10
10
  var rdoc_rel_prefix = "../";
11
+ var index_rel_prefix = "../";
11
12
  </script>
12
13
 
13
14
  <script src="../js/jquery.js"></script>
@@ -70,8 +71,12 @@
70
71
 
71
72
  <ul class="link-list" role="directory">
72
73
 
74
+ <li ><a href="#method-c-needs_dir-3F">::needs_dir?</a>
75
+
73
76
  <li ><a href="#method-c-new">::new</a>
74
77
 
78
+ <li ><a href="#method-i-editor_uri">#editor_uri</a>
79
+
75
80
  <li ><a href="#method-i-method_name">#method_name</a>
76
81
 
77
82
  <li ><a href="#method-i-min_percent">#min_percent</a>
@@ -126,6 +131,39 @@
126
131
  </header>
127
132
 
128
133
 
134
+ <div id="method-c-needs_dir-3F" class="method-detail ">
135
+
136
+ <div class="method-heading">
137
+ <span class="method-name">needs_dir?</span><span
138
+ class="method-args">()</span>
139
+
140
+ <span class="method-click-advice">click to toggle source</span>
141
+
142
+ </div>
143
+
144
+
145
+ <div class="method-description">
146
+
147
+ <p>whether this printer need a :path option pointing to a directory</p>
148
+
149
+
150
+
151
+
152
+ <div class="method-source-code" id="needs_dir-3F-source">
153
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 98</span>
154
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">needs_dir?</span>
155
+ <span class="ruby-keyword">false</span>
156
+ <span class="ruby-keyword">end</span></pre>
157
+ </div>
158
+
159
+ </div>
160
+
161
+
162
+
163
+
164
+ </div>
165
+
166
+
129
167
  <div id="method-c-new" class="method-detail ">
130
168
 
131
169
  <div class="method-heading">
@@ -170,6 +208,44 @@
170
208
  </header>
171
209
 
172
210
 
211
+ <div id="method-i-editor_uri" class="method-detail ">
212
+
213
+ <div class="method-heading">
214
+ <span class="method-name">editor_uri</span><span
215
+ class="method-args">()</span>
216
+
217
+ <span class="method-click-advice">click to toggle source</span>
218
+
219
+ </div>
220
+
221
+
222
+ <div class="method-description">
223
+
224
+
225
+
226
+
227
+
228
+
229
+ <div class="method-source-code" id="editor_uri-source">
230
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 47</span>
231
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">editor_uri</span>
232
+ <span class="ruby-identifier">default_uri</span> = <span class="ruby-keyword">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/darwin/</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-constant">ENV</span>[<span class="ruby-string">&#39;RUBY_PROF_EDITOR_URI&#39;</span>]
233
+ <span class="ruby-string">&#39;txmt&#39;</span>
234
+ <span class="ruby-keyword">else</span>
235
+ <span class="ruby-keyword">false</span>
236
+ <span class="ruby-keyword">end</span>
237
+ <span class="ruby-constant">ENV</span>[<span class="ruby-string">&#39;RUBY_PROF_EDITOR_URI&#39;</span>] <span class="ruby-operator">||</span> <span class="ruby-ivar">@options</span>[<span class="ruby-value">:editor_uri</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">default_uri</span>
238
+ <span class="ruby-keyword">end</span></pre>
239
+ </div>
240
+
241
+ </div>
242
+
243
+
244
+
245
+
246
+ </div>
247
+
248
+
173
249
  <div id="method-i-method_name" class="method-detail ">
174
250
 
175
251
  <div class="method-heading">
@@ -189,7 +265,7 @@
189
265
 
190
266
 
191
267
  <div class="method-source-code" id="method_name-source">
192
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 44</span>
268
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 57</span>
193
269
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">method_name</span>(<span class="ruby-identifier">method</span>)
194
270
  <span class="ruby-identifier">name</span> = <span class="ruby-identifier">method</span>.<span class="ruby-identifier">full_name</span>
195
271
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">print_file</span>
@@ -226,7 +302,7 @@
226
302
 
227
303
 
228
304
  <div class="method-source-code" id="min_percent-source">
229
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 32</span>
305
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 35</span>
230
306
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">min_percent</span>
231
307
  <span class="ruby-ivar">@options</span>[<span class="ruby-value">:min_percent</span>] <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
232
308
  <span class="ruby-keyword">end</span></pre>
@@ -267,7 +343,7 @@ options.</p>
267
343
 
268
344
 
269
345
  <div class="method-source-code" id="print-source">
270
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 60</span>
346
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 73</span>
271
347
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">print</span>(<span class="ruby-identifier">output</span> = <span class="ruby-constant">STDOUT</span>, <span class="ruby-identifier">options</span> = {})
272
348
  <span class="ruby-ivar">@output</span> = <span class="ruby-identifier">output</span>
273
349
  <span class="ruby-identifier">setup_options</span>(<span class="ruby-identifier">options</span>)
@@ -302,7 +378,7 @@ options.</p>
302
378
 
303
379
 
304
380
  <div class="method-source-code" id="print_file-source">
305
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 36</span>
381
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 39</span>
306
382
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_file</span>
307
383
  <span class="ruby-ivar">@options</span>[<span class="ruby-value">:print_file</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">false</span>
308
384
  <span class="ruby-keyword">end</span></pre>
@@ -335,7 +411,7 @@ options.</p>
335
411
 
336
412
 
337
413
  <div class="method-source-code" id="print_footer-source">
338
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 81</span>
414
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 94</span>
339
415
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_footer</span>(<span class="ruby-identifier">thread</span>)
340
416
  <span class="ruby-keyword">end</span></pre>
341
417
  </div>
@@ -367,7 +443,7 @@ options.</p>
367
443
 
368
444
 
369
445
  <div class="method-source-code" id="print_header-source">
370
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 78</span>
446
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 91</span>
371
447
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_header</span>(<span class="ruby-identifier">thread</span>)
372
448
  <span class="ruby-keyword">end</span></pre>
373
449
  </div>
@@ -399,7 +475,7 @@ options.</p>
399
475
 
400
476
 
401
477
  <div class="method-source-code" id="print_thread-source">
402
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 72</span>
478
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 85</span>
403
479
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_thread</span>(<span class="ruby-identifier">thread</span>)
404
480
  <span class="ruby-identifier">print_header</span>(<span class="ruby-identifier">thread</span>)
405
481
  <span class="ruby-identifier">print_methods</span>(<span class="ruby-identifier">thread</span>)
@@ -434,7 +510,7 @@ options.</p>
434
510
 
435
511
 
436
512
  <div class="method-source-code" id="print_threads-source">
437
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 66</span>
513
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 79</span>
438
514
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_threads</span>
439
515
  <span class="ruby-ivar">@result</span>.<span class="ruby-identifier">threads</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">thread</span><span class="ruby-operator">|</span>
440
516
  <span class="ruby-identifier">print_thread</span>(<span class="ruby-identifier">thread</span>)
@@ -479,13 +555,16 @@ options.</p>
479
555
  :sort_method - Specifies method used for sorting method infos.
480
556
  Available values are :total_time, :self_time,
481
557
  :wait_time, :children_time
482
- Default value is :total_time</pre>
558
+ Default value is :total_time
559
+ :editor_uri - Specifies editor uri scheme used for opening files
560
+ e.g. :atm or :mvim. For OS X default is :txmt.
561
+ Use RUBY_PROF_EDITOR_URI environment variable to overide.</pre>
483
562
 
484
563
 
485
564
 
486
565
 
487
566
  <div class="method-source-code" id="setup_options-source">
488
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 28</span>
567
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 31</span>
489
568
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">setup_options</span>(<span class="ruby-identifier">options</span> = {})
490
569
  <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">options</span>
491
570
  <span class="ruby-keyword">end</span></pre>
@@ -518,7 +597,7 @@ options.</p>
518
597
 
519
598
 
520
599
  <div class="method-source-code" id="sort_method-source">
521
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 40</span>
600
+ <pre><span class="ruby-comment"># File lib/ruby-prof/printers/abstract_printer.rb, line 43</span>
522
601
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">sort_method</span>
523
602
  <span class="ruby-ivar">@options</span>[<span class="ruby-value">:sort_method</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:total_time</span>
524
603
  <span class="ruby-keyword">end</span></pre>
@@ -540,7 +619,7 @@ options.</p>
540
619
 
541
620
  <footer id="validator-badges" role="contentinfo">
542
621
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
543
- <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.2.
622
+ <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
544
623
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
545
624
  </footer>
546
625
 
@@ -8,6 +8,7 @@
8
8
 
9
9
  <script type="text/javascript">
10
10
  var rdoc_rel_prefix = "../";
11
+ var index_rel_prefix = "../";
11
12
  </script>
12
13
 
13
14
  <script src="../js/jquery.js"></script>
@@ -545,7 +546,7 @@
545
546
 
546
547
  <footer id="validator-badges" role="contentinfo">
547
548
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
548
- <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.2.
549
+ <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
549
550
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
550
551
  </footer>
551
552
 
@@ -8,6 +8,7 @@
8
8
 
9
9
  <script type="text/javascript">
10
10
  var rdoc_rel_prefix = "../";
11
+ var index_rel_prefix = "../";
11
12
  </script>
12
13
 
13
14
  <script src="../js/jquery.js"></script>
@@ -78,8 +79,6 @@
78
79
 
79
80
  <li ><a href="#method-i-descendent_of">#descendent_of</a>
80
81
 
81
- <li ><a href="#method-i-detect_recursion">#detect_recursion</a>
82
-
83
82
  <li ><a href="#method-i-eliminate-21">#eliminate!</a>
84
83
 
85
84
  <li ><a href="#method-i-find_call">#find_call</a>
@@ -120,31 +119,6 @@
120
119
 
121
120
 
122
121
 
123
- <section class="attribute-method-details" class="method-section">
124
- <header>
125
- <h3>Attributes</h3>
126
- </header>
127
-
128
-
129
- <div id="attribute-i-recursive" class="method-detail">
130
- <div class="method-heading attribute-method-heading">
131
- <span class="method-name">recursive</span><span
132
- class="attribute-access-type">[R]</span>
133
- </div>
134
-
135
- <div class="method-description">
136
-
137
- <p>part of this class is defined in C code. it provides the following
138
- attributes pertaining to tree structure: depth: tree level (0 == root)
139
- parent: parent call info (can be nil) children: array of call info
140
- children (can be empty) target: method info (containing an array of
141
- call infos)</p>
142
-
143
- </div>
144
- </div>
145
-
146
- </section>
147
-
148
122
 
149
123
 
150
124
  <section id="public-class-5Buntitled-5D-method-details" class="method-section">
@@ -172,7 +146,7 @@ call infos)</p>
172
146
 
173
147
 
174
148
  <div class="method-source-code" id="roots_of-source">
175
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 59</span>
149
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 48</span>
176
150
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">roots_of</span>(<span class="ruby-identifier">call_infos</span>)
177
151
  <span class="ruby-identifier">roots</span> = []
178
152
  <span class="ruby-identifier">sorted</span> = <span class="ruby-identifier">call_infos</span>.<span class="ruby-identifier">sort_by</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:depth</span>).<span class="ruby-identifier">reverse</span>
@@ -218,7 +192,7 @@ call infos)</p>
218
192
 
219
193
 
220
194
  <div class="method-source-code" id="call_sequence-source">
221
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 41</span>
195
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 30</span>
222
196
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">call_sequence</span>
223
197
  <span class="ruby-ivar">@call_sequence</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
224
198
  <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">method</span><span class="ruby-operator">|</span> <span class="ruby-identifier">method</span>.<span class="ruby-identifier">full_name</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;-&gt;&#39;</span>)
@@ -247,13 +221,17 @@ call infos)</p>
247
221
 
248
222
  <div class="method-description">
249
223
 
250
-
224
+ <p>part of this class is defined in C code. it provides the following
225
+ attributes pertaining to tree structure: depth: tree level (0 == root)
226
+ parent: parent call info (can be nil) children: array of call info
227
+ children (can be empty) target: method info (containing an array of
228
+ call infos)</p>
251
229
 
252
230
 
253
231
 
254
232
 
255
233
  <div class="method-source-code" id="children_time-source">
256
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 22</span>
234
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 11</span>
257
235
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">children_time</span>
258
236
  <span class="ruby-identifier">children</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">call_info</span><span class="ruby-operator">|</span>
259
237
  <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">total_time</span>
@@ -288,7 +266,7 @@ call infos)</p>
288
266
 
289
267
 
290
268
  <div class="method-source-code" id="descendent_of-source">
291
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 51</span>
269
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 40</span>
292
270
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">descendent_of</span>(<span class="ruby-identifier">other</span>)
293
271
  <span class="ruby-identifier">p</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parent</span>
294
272
  <span class="ruby-keyword">while</span> <span class="ruby-identifier">p</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">p</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">other</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">depth</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">depth</span>
@@ -303,44 +281,6 @@ call infos)</p>
303
281
 
304
282
 
305
283
 
306
- </div>
307
-
308
-
309
- <div id="method-i-detect_recursion" class="method-detail ">
310
-
311
- <div class="method-heading">
312
- <span class="method-name">detect_recursion</span><span
313
- class="method-args">(visited_methods = Hash.new(0))</span>
314
-
315
- <span class="method-click-advice">click to toggle source</span>
316
-
317
- </div>
318
-
319
-
320
- <div class="method-description">
321
-
322
-
323
-
324
-
325
-
326
-
327
- <div class="method-source-code" id="detect_recursion-source">
328
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 13</span>
329
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">detect_recursion</span>(<span class="ruby-identifier">visited_methods</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>))
330
- <span class="ruby-ivar">@recursive</span> = (<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">target</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
331
- <span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
332
- <span class="ruby-identifier">child</span>.<span class="ruby-identifier">detect_recursion</span>(<span class="ruby-identifier">visited_methods</span>)
333
- <span class="ruby-keyword">end</span>
334
- <span class="ruby-identifier">visited_methods</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">target</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">target</span>] <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
335
- <span class="ruby-keyword">return</span> <span class="ruby-ivar">@recursive</span>
336
- <span class="ruby-keyword">end</span></pre>
337
- </div>
338
-
339
- </div>
340
-
341
-
342
-
343
-
344
284
  </div>
345
285
 
346
286
 
@@ -365,7 +305,7 @@ from both praent end self.</p>
365
305
 
366
306
 
367
307
  <div class="method-source-code" id="eliminate-21-source">
368
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 79</span>
308
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 68</span>
369
309
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">eliminate!</span>
370
310
  <span class="ruby-comment"># puts &quot;eliminating #{self}&quot;</span>
371
311
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">parent</span>
@@ -414,7 +354,7 @@ and call infos x</p>
414
354
 
415
355
 
416
356
  <div class="method-source-code" id="find_call-source">
417
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 99</span>
357
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 88</span>
418
358
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">find_call</span>(<span class="ruby-identifier">other</span>)
419
359
  <span class="ruby-identifier">matching</span> = <span class="ruby-identifier">children</span>.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">kid</span><span class="ruby-operator">|</span> <span class="ruby-identifier">kid</span>.<span class="ruby-identifier">target</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">target</span> }
420
360
  <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;inconsistent call tree&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">matching</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">1</span>
@@ -454,7 +394,7 @@ and call infos x</p>
454
394
 
455
395
 
456
396
  <div class="method-source-code" id="inspect-source">
457
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 72</span>
397
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 61</span>
458
398
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">inspect</span>
459
399
  <span class="ruby-keyword">super</span> <span class="ruby-operator">+</span> <span class="ruby-node">&quot;(#{target.full_name}, d: #{depth}, c: #{called}, tt: #{total_time}, st: #{self_time}, ct: #{children_time})&quot;</span>
460
400
  <span class="ruby-keyword">end</span></pre>
@@ -488,7 +428,7 @@ merges children of other into children of self.</p>
488
428
 
489
429
 
490
430
  <div class="method-source-code" id="merge_call_tree-source">
491
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 106</span>
431
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 95</span>
492
432
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">merge_call_tree</span>(<span class="ruby-identifier">other</span>)
493
433
  <span class="ruby-comment"># $stderr.puts &quot;merging #{self}\nand #{other}&quot;</span>
494
434
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">called</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">called</span>
@@ -536,7 +476,7 @@ merges children of other into children of self.</p>
536
476
 
537
477
 
538
478
  <div class="method-source-code" id="root-3F-source">
539
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 47</span>
479
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 36</span>
540
480
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">root?</span>
541
481
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
542
482
  <span class="ruby-keyword">end</span></pre>
@@ -569,7 +509,7 @@ merges children of other into children of self.</p>
569
509
 
570
510
 
571
511
  <div class="method-source-code" id="stack-source">
572
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 28</span>
512
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 17</span>
573
513
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">stack</span>
574
514
  <span class="ruby-ivar">@stack</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
575
515
  <span class="ruby-identifier">methods</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
@@ -611,7 +551,7 @@ merges children of other into children of self.</p>
611
551
 
612
552
 
613
553
  <div class="method-source-code" id="to_s-source">
614
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 68</span>
554
+ <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 57</span>
615
555
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_s</span>
616
556
  <span class="ruby-node">&quot;#{target.full_name} (c: #{called}, tt: #{total_time}, st: #{self_time}, ct: #{children_time})&quot;</span>
617
557
  <span class="ruby-keyword">end</span></pre>
@@ -633,7 +573,7 @@ merges children of other into children of self.</p>
633
573
 
634
574
  <footer id="validator-badges" role="contentinfo">
635
575
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
636
- <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.2.
576
+ <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
637
577
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
638
578
  </footer>
639
579