Lines Matching full:begin

46   void segregate(size_t begin, size_t end, bool constant);
55 size_t findBoundary(size_t begin, size_t end);
57 void forEachClassRange(size_t begin, size_t end,
108 void ICF::segregate(size_t begin, size_t end, bool constant) {
109 while (begin < end) {
110 // Divide [Begin, End) into two. Let Mid be the start index of the
113 chunks.begin() + begin + 1, chunks.begin() + end, [&](SectionChunk *s) {
115 return equalsConstant(chunks[begin], s);
116 return equalsVariable(chunks[begin], s);
118 size_t mid = bound - chunks.begin();
120 // Split [Begin, End) into [Begin, Mid) and [Mid, End). We use Mid as an
122 for (size_t i = begin; i < mid; ++i)
129 begin = mid;
144 return std::equal(ra.begin(), ra.end(), rb.begin(), rb.end(),
172 if (!std::equal(a->getRelocs().begin(), a->getRelocs().end(),
173 b->getRelocs().begin(), eq))
206 return std::equal(a->getRelocs().begin(), a->getRelocs().end(),
207 b->getRelocs().begin(), eq) &&
211 // Find the first Chunk after Begin that has a different class from Begin.
212 size_t ICF::findBoundary(size_t begin, size_t end) {
213 for (size_t i = begin + 1; i < end; ++i)
214 if (chunks[begin]->eqClass[cnt % 2] != chunks[i]->eqClass[cnt % 2])
219 void ICF::forEachClassRange(size_t begin, size_t end,
221 while (begin < end) {
222 size_t mid = findBoundary(begin, end);
223 fn(begin, mid);
224 begin = mid;
308 forEachClass([&](size_t begin, size_t end) { segregate(begin, end, true); });
314 [&](size_t begin, size_t end) { segregate(begin, end, false); });
320 forEachClass([&](size_t begin, size_t end) {
321 if (end - begin == 1)
324 log("Selected " + chunks[begin]->getDebugName());
325 for (size_t i = begin + 1; i < end; ++i) {
327 chunks[begin]->replace(chunks[i]);