summaryrefslogtreecommitdiff
path: root/lib/profiler.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/profiler.rb')
-rw-r--r--lib/profiler.rb14
1 files changed, 7 insertions, 7 deletions
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