From ef6abd10c725bdf85d8b35a723cd0eca454bfcd7 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 23 Dec 2012 08:57:22 +0000 Subject: profiler.rb: TracePoint * lib/profiler.rb (Profiler__::PROFILE_PROC): use TracePoint. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/profiler.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'lib/profiler.rb') diff --git a/lib/profiler.rb b/lib/profiler.rb index ed787af267..3194ebaf48 100644 --- a/lib/profiler.rb +++ b/lib/profiler.rb @@ -60,14 +60,14 @@ module Profiler__ # internal values @@start = @@stack = @@map = @@array = nil - PROFILE_PROC = proc{|event, file, line, id, binding, klass| - case event - when "call", "c-call" + PROFILE_PROC = TracePoint.new(:call, :c_call, :return, :c_return) {|tp| + case tp.event + when :call, :c_call now = Process.times[0] @@stack.push [now, 0.0] - when "return", "c-return" + when :return, :c_return now = Process.times[0] - key = [klass, id] + key = [tp.defined_class, tp.method_id] if tick = @@stack.pop data = begin @@map[key] ||= [0, 0.0, 0.0, key] @@ -88,10 +88,10 @@ module_function @@stack = [] @@map = {} @@array = [] - set_trace_func PROFILE_PROC + PROFILE_PROC.enable end def stop_profile - set_trace_func nil + PROFILE_PROC.disable end def print_profile(f) stop_profile -- cgit v1.2.3