[llvm] r227381 - Add DWARFUnit::getNumDIEs() and getDIEIndex()
Frederic Riss
friss at apple.com
Wed Jan 28 14:15:07 PST 2015
Author: friss
Date: Wed Jan 28 16:15:07 2015
New Revision: 227381
URL: http://llvm.org/viewvc/llvm-project?rev=227381&view=rev
Log:
Add DWARFUnit::getNumDIEs() and getDIEIndex()
Parsed DIEs are stored in a vector and that makes it easy to get their
indices. Having easy access to a DIE's index makes it possible to use
arrays or vectors to efficiently store/access DIE related information.
There's no test for that new functionality (I don't see how to test
it standalone), but it'll be used in a subsequent dsymutil commit.
Modified:
llvm/trunk/include/llvm/DebugInfo/DWARFUnit.h
Modified: llvm/trunk/include/llvm/DebugInfo/DWARFUnit.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARFUnit.h?rev=227381&r1=227380&r2=227381&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARFUnit.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARFUnit.h Wed Jan 28 16:15:07 2015
@@ -213,6 +213,26 @@ public:
/// getUnitSection - Return the DWARFUnitSection containing this unit.
const DWARFUnitSectionBase &getUnitSection() const { return UnitSection; }
+ /// \brief Returns the number of DIEs in the unit. Parses the unit
+ /// if necessary.
+ unsigned getNumDIEs() {
+ extractDIEsIfNeeded(false);
+ return DieArray.size();
+ }
+
+ /// \brief Return the index of a DIE inside the unit's DIE vector.
+ ///
+ /// It is illegal to call this method with a DIE that hasn't be
+ /// created by this unit. In other word, it's illegal to call this
+ /// method on a DIE that isn't accessible by following
+ /// children/sibling links starting from this unit's
+ /// getCompileUnitDIE().
+ uint32_t getDIEIndex(const DWARFDebugInfoEntryMinimal *DIE) {
+ assert(!DieArray.empty() && DIE >= &DieArray[0] &&
+ DIE < &DieArray[0] + DieArray.size());
+ return DIE - &DieArray[0];
+ }
+
private:
/// Size in bytes of the .debug_info data associated with this compile unit.
size_t getDebugInfoSize() const { return Length + 4 - getHeaderSize(); }
More information about the llvm-commits
mailing list