]> sourceware.org Git - systemtap.git/commit - tapsets.cxx
PR10594: Provide a cached dwarf_getscopes_die
authorJosh Stone <jistone@redhat.com>
Wed, 9 Sep 2009 22:45:28 +0000 (15:45 -0700)
committerJosh Stone <jistone@redhat.com>
Thu, 10 Sep 2009 20:20:24 +0000 (13:20 -0700)
commit9aa8ffcea9980d24cc9c9f13d9dd51e46e6283bf
treea82b5fbeae54d67d9bc047bc0591c34f34c4205e
parenteaec8e2b4cf10fc293a0cb2524692ae25a810ec9
PR10594: Provide a cached dwarf_getscopes_die

This avoids repeated DIE traversal by caching all parents on the first
call, so future calls are just a simple walk up parent links.

* dwflpp.cxx (dwflpp::getscopes_die): New cached function that mimics
  libdw's dwarf_getscopes_die using cached parent links.
  (dwflpp::cache_die_parents): New function to build the parent cache.
  (dwflpp::~dwflpp): Clean up the parent caches.
  (dwflpp::iterate_over_labels): Use the cached getscopes_die.
  (dwflpp::find_variable_and_frame_base): Ditto.
* tapsets.cxx (dwarf_derived_probe::saveargs): Ditto.
  (uprobe_derived_probe::saveargs): Ditto.
  (dwarf_var_expanding_visitor::visit_target_symbol_context): Ditto.
dwflpp.cxx
dwflpp.h
tapsets.cxx
This page took 0.02611 seconds and 5 git commands to generate.