Lines Matching refs:lo
967 /* Reverse a slice of a list in place, from lo up to (exclusive) hi. */
969 reverse_slice(PyObject **lo, PyObject **hi)
971 assert(lo && hi);
974 while (lo < hi) {
975 PyObject *t = *lo;
976 *lo = *hi;
978 ++lo;
1046 [lo, hi) is a contiguous slice of a list, and is sorted via
1048 On entry, must have lo <= start <= hi, and that [lo, start) is already
1049 sorted (pass start == lo if you don't know!).
1055 binarysort(PyObject **lo, PyObject **hi, PyObject **start, PyObject *compare)
1062 assert(lo <= start && start <= hi);
1063 /* assert [lo, start) is sorted */
1064 if (lo == start)
1068 l = lo;
1072 * pivot >= all in [lo, l).
1085 /* The invariants still hold, so pivot >= all in [lo, l) and
1103 Return the length of the run beginning at lo, in the slice [lo, hi). lo < hi
1106 lo[0] <= lo[1] <= lo[2] <= ...
1110 lo[0] > lo[1] > lo[2] > ...
1121 count_run(PyObject **lo, PyObject **hi, PyObject *compare, int *descending)
1126 assert(lo < hi);
1128 ++lo;
1129 if (lo == hi)
1133 IFLT(*lo, *(lo-1)) {
1135 for (lo = lo+1; lo < hi; ++lo, ++n) {
1136 IFLT(*lo, *(lo-1))
1143 for (lo = lo+1; lo < hi; ++lo, ++n) {
1144 IFLT(*lo, *(lo-1))
2050 PyObject **lo, **hi;
2132 lo = saved_ob_item;
2133 hi = lo + nremaining;
2140 n = count_run(lo, hi, compare, &descending);
2144 reverse_slice(lo, lo + n);
2149 if (binarysort(lo, lo + force, lo + n, compare) < 0)
2155 ms.pending[ms.n].base = lo;
2161 lo += n;
2164 assert(lo == hi);