Lines Matching refs:lo
298 static IdxT partition (lua_State *L, IdxT lo, IdxT up) { in partition() argument
299 IdxT i = lo; /* will be incremented before first use */ in partition()
334 static IdxT choosePivot (IdxT lo, IdxT up, unsigned int rnd) { in choosePivot() argument
335 IdxT r4 = (up - lo) / 4; /* range/4 */ in choosePivot()
336 IdxT p = rnd % (r4 * 2) + (lo + r4); in choosePivot()
337 lua_assert(lo + r4 <= p && p <= up - r4); in choosePivot()
345 static void auxsort (lua_State *L, IdxT lo, IdxT up, in auxsort() argument
347 while (lo < up) { /* loop for tail recursion */ in auxsort()
351 lua_geti(L, 1, lo); in auxsort()
354 set2(L, lo, up); /* swap a[lo] - a[up] */ in auxsort()
357 if (up - lo == 1) /* only 2 elements? */ in auxsort()
359 if (up - lo < RANLIMIT || rnd == 0) /* small interval or no randomize? */ in auxsort()
360 p = (lo + up)/2; /* middle element is a good pivot */ in auxsort()
362 p = choosePivot(lo, up, rnd); in auxsort()
364 lua_geti(L, 1, lo); in auxsort()
366 set2(L, p, lo); /* swap a[p] - a[lo] */ in auxsort()
375 if (up - lo == 2) /* only 3 elements? */ in auxsort()
381 p = partition(L, lo, up); in auxsort()
383 if (p - lo < up - p) { /* lower interval is smaller? */ in auxsort()
384 auxsort(L, lo, p - 1, rnd); /* call recursively for lower interval */ in auxsort()
385 n = p - lo; /* size of smaller interval */ in auxsort()
386 lo = p + 1; /* tail call for [p + 1 .. up] (upper interval) */ in auxsort()
393 if ((up - lo) / 128 > n) /* partition too imbalanced? */ in auxsort()