Lines Matching refs:Begin
102 void segregate(size_t Begin, size_t End, bool Constant);
115 size_t findBoundary(size_t Begin, size_t End);
117 void forEachClassRange(size_t Begin, size_t End,
197 void ICF<ELFT>::segregate(size_t Begin, size_t End, bool Constant) { in segregate() argument
206 while (Begin < End) { in segregate()
210 std::stable_partition(Sections.begin() + Begin + 1, in segregate()
213 return equalsConstant(Sections[Begin], S); in segregate()
214 return equalsVariable(Sections[Begin], S); in segregate()
221 for (size_t I = Begin; I < Mid; ++I) in segregate()
228 Begin = Mid; in segregate()
368 template <class ELFT> size_t ICF<ELFT>::findBoundary(size_t Begin, size_t End) { in findBoundary() argument
369 uint32_t Class = Sections[Begin]->Class[Current]; in findBoundary()
370 for (size_t I = Begin + 1; I < End; ++I) in findBoundary()
382 void ICF<ELFT>::forEachClassRange(size_t Begin, size_t End, in forEachClassRange() argument
384 while (Begin < End) { in forEachClassRange()
385 size_t Mid = findBoundary(Begin, End); in forEachClassRange()
386 Fn(Begin, Mid); in forEachClassRange()
387 Begin = Mid; in forEachClassRange()
477 forEachClass([&](size_t Begin, size_t End) { segregate(Begin, End, true); }); in run() argument
483 [&](size_t Begin, size_t End) { segregate(Begin, End, false); }); in run() argument
489 forEachClassRange(0, Sections.size(), [&](size_t Begin, size_t End) { in run() argument
490 if (End - Begin == 1) in run()
492 print("selected section " + toString(Sections[Begin])); in run()
493 for (size_t I = Begin + 1; I < End; ++I) { in run()
495 Sections[Begin]->replace(Sections[I]); in run()