Actions
Feature #12747
closedAdd TracePoint#callee_id
Description
Abstract¶
I propose to add TracePoint#callee_id which returns the called name of the method.
def m
end
alias am m
TracePoint.new(:call) do |tp|
p [tp.method_id, tp.callee_id] #=> [:m, :am]
end.enable do
am
end
Background¶
We can get callee id by tp.binding.eval('__callee__'))
,
but it is slow(10x~) and can't get callee id of CFUNC.
class Object
alias aitself itself
end
TracePoint.new(:c_call) do |tp|
p [tp.method_id, tp.binding.eval('__callee__')] #=> [:itself, nil]
end.enable do
aitself
end
Implementation¶
I attached 2 patches.
- 0001-TracePoint-method_id-should-return-method_id-not-cal.patch
- Now, TracePoint#method_id returns not only method id(
__method__
) but callee id.
This patch makes TracePoint#method_id return method id always, so it introduces some incompatibility.
- Now, TracePoint#method_id returns not only method id(
- 0002-Add-TracePoint-callee_id.patch
- Add TracePoint#callee_id.
Usecase¶
power_assert gem wants this method to get column number of each method calls.
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0