Skip to content
  • Jeremy Evans's avatar
    2d98593b
    Support tracing of attr_reader and attr_writer · 2d98593b
    Jeremy Evans authored
    
    
    In vm_call_method_each_type, check for c_call and c_return events before
    dispatching to vm_call_ivar and vm_call_attrset.  With this approach, the
    call cache will still dispatch directly to those functions, so this
    change will only decrease performance for the first (uncached) call, and
    even then, the performance decrease is very minimal.
    
    This approach requires that we clear the call caches when tracing is
    enabled or disabled.  The approach currently switches all vm_call_ivar
    and vm_call_attrset call caches to vm_call_general any time tracing is
    enabled or disabled. So it could theoretically result in a slowdown for
    code that constantly enables or disables tracing.
    
    This approach does not handle targeted tracepoints, but from my testing,
    c_call and c_return events are not supported for targeted tracepoints,
    so that shouldn't matter.
    
    This includes a benchmark showing the performance decrease is minimal
    if detectable at all.
    
    Fixes [Bug #16383]
    Fixes [Bug #10470]
    
    Co-authored-by: default avatarTakashi Kokubun <takashikkbn@gmail.com>
    2d98593b
    Support tracing of attr_reader and attr_writer
    Jeremy Evans authored
    
    
    In vm_call_method_each_type, check for c_call and c_return events before
    dispatching to vm_call_ivar and vm_call_attrset.  With this approach, the
    call cache will still dispatch directly to those functions, so this
    change will only decrease performance for the first (uncached) call, and
    even then, the performance decrease is very minimal.
    
    This approach requires that we clear the call caches when tracing is
    enabled or disabled.  The approach currently switches all vm_call_ivar
    and vm_call_attrset call caches to vm_call_general any time tracing is
    enabled or disabled. So it could theoretically result in a slowdown for
    code that constantly enables or disables tracing.
    
    This approach does not handle targeted tracepoints, but from my testing,
    c_call and c_return events are not supported for targeted tracepoints,
    so that shouldn't matter.
    
    This includes a benchmark showing the performance decrease is minimal
    if detectable at all.
    
    Fixes [Bug #16383]
    Fixes [Bug #10470]
    
    Co-authored-by: default avatarTakashi Kokubun <takashikkbn@gmail.com>
Loading