1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

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
This commit is contained in:
nobu 2012-12-23 08:57:22 +00:00
parent cd6139cacd
commit ef6abd10c7
2 changed files with 11 additions and 7 deletions

View file

@ -1,3 +1,7 @@
Sun Dec 23 17:57:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/profiler.rb (Profiler__::PROFILE_PROC): use TracePoint.
Sun Dec 23 16:13:00 2012 Zachary Scott <zachary@zacharyscott.net>
* lib/erb.rb: typos for ERB::new link

View file

@ -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