class Stackprofiler::Filter::RebaseStack

Attributes

manual[RW]

Public Class Methods

new(options={}) click to toggle source
# File lib/stackprofiler/filters/rebase_stack.rb, line 6
def initialize(options={})
  self.manual = options[:name].presence
end

Public Instance Methods

filter(root, run) click to toggle source
# File lib/stackprofiler/filters/rebase_stack.rb, line 10
def filter root, run
  suggested = run.profile[:suggested_rebase]

  root.find do |node|
    next if node == root
    addr = node.content[:addrs].first.to_i
    frame = run.profile[:frames][addr]

    if manual
      frame[:name].include? manual
    elsif suggested.is_a? String
      suggested == frame[:name]
    else
      suggested == addr
    end
  end || root
end