mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 09:41:03 -04:00
libkern: Drop incorrect qsort optimization
See 5205b32de3 for details.
PR: 287089
MFC after: 1 week
Reviewed by: jlduran
Differential Revision: https://reviews.freebsd.org/D51919
This commit is contained in:
parent
6118587172
commit
ef8f3e9131
1 changed files with 1 additions and 13 deletions
|
|
@ -114,11 +114,10 @@ qsort(void *a, size_t n, size_t es, cmp_t *cmp)
|
|||
char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
|
||||
size_t d1, d2;
|
||||
int cmp_result;
|
||||
int swaptype_long, swaptype_int, swap_cnt;
|
||||
int swaptype_long, swaptype_int;
|
||||
|
||||
loop: SWAPINIT(long, a, es);
|
||||
SWAPINIT(int, a, es);
|
||||
swap_cnt = 0;
|
||||
if (n < 7) {
|
||||
for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es)
|
||||
for (pl = pm;
|
||||
|
|
@ -147,7 +146,6 @@ loop: SWAPINIT(long, a, es);
|
|||
for (;;) {
|
||||
while (pb <= pc && (cmp_result = CMP(thunk, pb, a)) <= 0) {
|
||||
if (cmp_result == 0) {
|
||||
swap_cnt = 1;
|
||||
swap(pa, pb);
|
||||
pa += es;
|
||||
}
|
||||
|
|
@ -155,7 +153,6 @@ loop: SWAPINIT(long, a, es);
|
|||
}
|
||||
while (pb <= pc && (cmp_result = CMP(thunk, pc, a)) >= 0) {
|
||||
if (cmp_result == 0) {
|
||||
swap_cnt = 1;
|
||||
swap(pc, pd);
|
||||
pd -= es;
|
||||
}
|
||||
|
|
@ -164,18 +161,9 @@ loop: SWAPINIT(long, a, es);
|
|||
if (pb > pc)
|
||||
break;
|
||||
swap(pb, pc);
|
||||
swap_cnt = 1;
|
||||
pb += es;
|
||||
pc -= es;
|
||||
}
|
||||
if (swap_cnt == 0) { /* Switch to insertion sort */
|
||||
for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es)
|
||||
for (pl = pm;
|
||||
pl > (char *)a && CMP(thunk, pl - es, pl) > 0;
|
||||
pl -= es)
|
||||
swap(pl, pl - es);
|
||||
return;
|
||||
}
|
||||
|
||||
pn = (char *)a + n * es;
|
||||
d1 = MIN(pa - (char *)a, pb - pa);
|
||||
|
|
|
|||
Loading…
Reference in a new issue