It's only used in one branch, so we were unnecessarily calculating the
length of many symbol names.
Tiny speedup when linking chromium_framework on my M1 Mac mini:
x before.txt
+ after.txt
N Min Max Median Avg Stddev
x 10 3.
9917109 4.0418 4.
0318099 4.
0203902 0.
021459873
+ 10 3.944725 4.053988 3.
9708955 3.
9825602 0.
037257609
Difference at 95.0% confidence
-0.03783 +/- 0.
0285663
-0.940953% +/- 0.710536%
(Student's t, pooled s = 0.
0304028)
Differential Revision: https://reviews.llvm.org/
D130234
if (sym.n_type & N_STAB)
continue;
- StringRef name = strtab + sym.n_strx;
if ((sym.n_type & N_TYPE) == N_SECT) {
Subsections &subsections = sections[sym.n_sect - 1]->subsections;
// parseSections() may have chosen not to parse this section.
} else if (isUndef(sym)) {
undefineds.push_back(i);
} else {
- symbols[i] = parseNonSectionSymbol(sym, name);
+ symbols[i] = parseNonSectionSymbol(sym, StringRef(strtab + sym.n_strx));
}
}