[DynInst_API:] commit: symtab and parseAPI optimizations now on master


Date: Thu, 05 Feb 2015 11:05:02 -0600
From: Bill Williams <bill@xxxxxxxxxxx>
Subject: [DynInst_API:] commit: symtab and parseAPI optimizations now on master
I've just merged various SymtabAPI and ParseAPI memory optimizations back to our master branch. This work covers the following things:

1) Line information is now parsed per-CU, provided that you ask for the file/line corresponding to an address. Other line information queries still require a full line info parse. 2) Symbols' demangled names are generated on-the-fly, rather than being stored persistently. This should result in lower memory overhead, some additional startup time (as building the demangled name indexes has become more expensive), and roughly comparable query speeds (we're replacing a log n set of string compares with a hash and a demangle). 3) ParseAPI's block and function extent data structures should consume much, much less space in the common case (mostly non-overlapping blocks and functions). It is possible that there will be a small CPU tradeoff for some users. 4) StackwalkerAPI no longer accidentally triggers a full binary parse by asking ParseAPI for the blocks containing a given address.

IMPORTANT INTERFACE CHANGES: the Symbol class has been revised in line with my recent RFC to provide foo_names_begin/foo_names_end accessors. The old container-style interfaces *must* be discarded in order for optimization 2) to actually work. This has propagated through various users of symbol names; many interfaces that were returning string references now must return strings by value, and the getCallee method in BPatch_loopTreeNode now returns a std::string rather than a const char*.

This is not an official release, but users who are interested in these optimizations are encouraged to try them out.

--bw

Bill Williams
Paradyn Project
bill@xxxxxxxxxxx
[← Prev in Thread] Current Thread [Next in Thread→]