diff --git a/ChangeLog b/ChangeLog index c1c762b5b6..8b8e50c1a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Dec 8 00:40:52 2005 Yukihiro Matsumoto + + * eval.c (call_trace_func): klass parameter should be a + class/module that defines calling method. [ruby-talk:169307] + Wed Dec 7 17:10:27 2005 Kazuhiro NISHIYAMA * sprintf.c (rb_f_sprintf): [ruby-dev:27967] diff --git a/eval.c b/eval.c index db01897f34..c46bb5e69c 100644 --- a/eval.c +++ b/eval.c @@ -2514,7 +2514,7 @@ call_trace_func(rb_event_t event, NODE *node, VALUE self, ID id, VALUE klass /* klass = RBASIC(klass)->klass; } else if (FL_TEST(klass, FL_SINGLETON)) { - klass = self; + klass = rb_iv_get(klass, "__attached__"); } } PUSH_TAG(PROT_NONE); diff --git a/lib/profiler.rb b/lib/profiler.rb index 9762fa1181..1067106be4 100644 --- a/lib/profiler.rb +++ b/lib/profiler.rb @@ -34,7 +34,7 @@ module_function total = Process.times[0] - @@start if total == 0 then total = 0.01 end data = @@map.values - data.sort!{|a,b| b[2] <=> a[2]} + data = data.sort_by{|x| x[2]} sum = 0 f.printf " %% cumulative self self total\n" f.printf " time seconds seconds calls ms/call ms/call name\n"