[llvm] [DebugNames] Compare TableEntry names more efficiently (PR #79759)
Adrian Prantl via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 29 14:11:09 PST 2024
================
@@ -543,6 +543,27 @@ class DWARFDebugNames : public DWARFAcceleratorTable {
return StrData.getCStr(&Off);
}
+ // Compares the name of this entry against Target, returning true if they
+ // are equal. This is helpful is hot code paths that do not need the length
+ // of the name.
+ bool compareNameAgainst(StringRef Target) const {
+ // Note: this is not the name, but the rest of debug_names starting from
+ // name. This handles corrupt data (non-null terminated) without
+ // overruning the buffer.
+ auto Data = StrData.getData().substr(StringOffset);
+ auto DataSize = Data.size();
+ auto TargetSize = Target.size();
+
+ // Invariant: at the start of the loop, we have non-null characters to
+ // read from Data.
+ size_t Idx = 0;
+ for (; Idx < DataSize && Data[Idx]; Idx++) {
----------------
adrian-prantl wrote:
FWIW, it might not hurt to include the (shortened) rationale about str(n)cmp in the code as a comment.
https://github.com/llvm/llvm-project/pull/79759
More information about the llvm-commits
mailing list