On Tue, 03 Sep 2013 13:43:29 +0200, Mark Wielaard wrote:
> Good point, assuming you meant dwarf_getlocation_addr, that removes some
> duplicate code. Revised patch attached.

You have not addressed my previous note
# Although one would have to hack there prevention of getlocation() for
# non-matching ranges.

Currently you call getlocation->__libdw_intern_expression for every range in
the location list, even if that range does not contain our PC.  That is both
CPU expensive and it also "leaks" memory (until cu->dbg gets destroyed) even
more than formerly (formerly only one range got "leaked" on each
dwarf_getlocation call).

My idea was more to create dwarf_getlocations_internal without its last
getlocation call, use that from refactored dwarf_getlocation and create
current public dwarf_getlocations as a wrapper around
dwarf_getlocations_internal with that getlocation call.

But then one may argue it is no longer such a simplification.

And maybe also you do not find it as an issue as location lists are never too
long anyway.


Jan

Reply via email to