class RubyProf::FlameGraphPrinter
def build_flame_data(call_tree, visited = Set.new)
def build_flame_data(call_tree, visited = Set.new) node = { name: call_tree.target.full_name, value: call_tree.total_time, self_value: call_tree.self_time, called: call_tree.called, children: [] } unless visited.include?(call_tree.target) visited.add(call_tree.target) call_tree.children.sort_by { |c| -c.total_time }.each do |child| node[:children] << build_flame_data(child, visited) end visited.delete(call_tree.target) end node end