Skip to content

Commit b43f35d

Browse files
committed
Support arg for measure command
1 parent b7c7c6b commit b43f35d

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

lib/irb.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -544,9 +544,10 @@ def eval_input
544544
if IRB.conf[:MEASURE] && !IRB.conf[:MEASURE_CALLBACKS].empty?
545545
result = nil
546546
last_proc = proc{ result = @context.evaluate(line, line_no, exception: exc) }
547-
IRB.conf[:MEASURE_CALLBACKS].map{ |s| s.last }.inject(last_proc) { |chain, item|
547+
IRB.conf[:MEASURE_CALLBACKS].inject(last_proc) { |chain, item|
548+
_name, callback, arg = item
548549
proc {
549-
item.(@context, line, line_no, exception: exc) do
550+
callback.(@context, line, line_no, arg, exception: exc) do
550551
chain.call
551552
end
552553
}

lib/irb/cmd/measure.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ def execute(type = nil, arg = nil)
1414
IRB.conf[:MEASURE] = nil
1515
IRB.unset_measure_callback(arg)
1616
when :list
17-
IRB.conf[:MEASURE_CALLBACKS].each do |type_name, _|
18-
puts "- #{type_name}"
17+
IRB.conf[:MEASURE_CALLBACKS].each do |type_name, _, arg|
18+
puts "- #{type_name}" + (arg ? "(#{arg.inspect})" : '')
1919
end
2020
when :on
2121
IRB.conf[:MEASURE] = true
22-
added = IRB.set_measure_callback(type)
23-
puts "#{added.first} is added."
22+
added = IRB.set_measure_callback(type, arg)
23+
puts "#{added[0]} is added."
2424
else
2525
IRB.conf[:MEASURE] = true
26-
added = IRB.set_measure_callback(type)
27-
puts "#{added.first} is added."
26+
added = IRB.set_measure_callback(type, arg)
27+
puts "#{added[0]} is added."
2828
end
2929
nil
3030
end

lib/irb/init.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def IRB.init_config(ap_path)
120120
puts 'processing time: %fs' % (now - time) if IRB.conf[:MEASURE]
121121
result
122122
}
123-
@CONF[:MEASURE_PROC][:STACKPROF] = proc { |context, code, line_no, &block|
123+
@CONF[:MEASURE_PROC][:STACKPROF] = proc { |context, code, line_no, arg, &block|
124124
success = false
125125
begin
126126
require 'stackprof'
@@ -130,7 +130,7 @@ def IRB.init_config(ap_path)
130130
end
131131
if success
132132
result = nil
133-
stackprof_result = StackProf.run(mode: :cpu) do
133+
stackprof_result = StackProf.run(mode: arg ? arg : :cpu) do
134134
result = block.()
135135
end
136136
StackProf::Report.new(stackprof_result).print_text if IRB.conf[:MEASURE]
@@ -146,17 +146,17 @@ def IRB.init_config(ap_path)
146146
@CONF[:AT_EXIT] = []
147147
end
148148

149-
def IRB.set_measure_callback(type = nil)
149+
def IRB.set_measure_callback(type = nil, arg = nil)
150150
added = nil
151151
if type
152152
type_sym = type.upcase.to_sym
153153
if IRB.conf[:MEASURE_PROC][type_sym]
154-
added = [type_sym, IRB.conf[:MEASURE_PROC][type_sym]]
154+
added = [type_sym, IRB.conf[:MEASURE_PROC][type_sym], arg]
155155
end
156156
elsif IRB.conf[:MEASURE_PROC][:CUSTOM]
157-
added = [:CUSTOM, IRB.conf[:MEASURE_PROC][:CUSTOM]]
157+
added = [:CUSTOM, IRB.conf[:MEASURE_PROC][:CUSTOM], arg]
158158
else
159-
added = [:TIME, IRB.conf[:MEASURE_PROC][:TIME]]
159+
added = [:TIME, IRB.conf[:MEASURE_PROC][:TIME], arg]
160160
end
161161
IRB.conf[:MEASURE_CALLBACKS] << added if added
162162
added
@@ -167,7 +167,7 @@ def IRB.unset_measure_callback(type = nil)
167167
IRB.conf[:MEASURE_CALLBACKS].clear
168168
else
169169
type_sym = type.upcase.to_sym
170-
IRB.conf[:MEASURE_CALLBACKS].reject!{ |t, c| t == type_sym }
170+
IRB.conf[:MEASURE_CALLBACKS].reject!{ |t, | t == type_sym }
171171
end
172172
end
173173

0 commit comments

Comments
 (0)