9
9
#ifndef LLVM_LIBC_SRC_STDLIB_QSORT_PIVOT_H
10
10
#define LLVM_LIBC_SRC_STDLIB_QSORT_PIVOT_H
11
11
12
- #include < stddef.h> // For size_t
12
+ #include < stddef.h> // For size_t
13
13
14
14
namespace LIBC_NAMESPACE_DECL {
15
15
namespace internal {
@@ -22,7 +22,7 @@ constexpr size_t PSEUDO_MEDIAN_REC_THRESHOLD = 64;
22
22
// This chooses a pivot by sampling an adaptive amount of points, approximating
23
23
// the quality of a median of sqrt(n) elements.
24
24
template <typename A, typename F>
25
- size_t choose_pivot (const A &array, const F &is_less) {
25
+ LIBC_INLINE size_t choose_pivot (const A &array, const F &is_less) {
26
26
const size_t len = array.len ();
27
27
28
28
if (len < 8 ) {
@@ -47,8 +47,8 @@ size_t choose_pivot(const A &array, const F &is_less) {
47
47
// recursion depth and overall sample from f(n) = 3*f(n/8) -> f(n) =
48
48
// O(n^(log(3)/log(8))) ~= O(n^0.528) elements.
49
49
template <typename A, typename F>
50
- size_t median3_rec (const A &array, size_t a, size_t b, size_t c, size_t n ,
51
- const F &is_less) {
50
+ LIBC_INLINE size_t median3_rec (const A &array, size_t a, size_t b, size_t c,
51
+ size_t n, const F &is_less) {
52
52
if (n * 8 >= PSEUDO_MEDIAN_REC_THRESHOLD) {
53
53
const size_t n8 = n / 8 ;
54
54
a = median3_rec (array, a, a + (n8 * 4 ), a + (n8 * 7 ), n8, is_less);
@@ -60,7 +60,8 @@ size_t median3_rec(const A &array, size_t a, size_t b, size_t c, size_t n,
60
60
61
61
// / Calculates the median of 3 elements.
62
62
template <typename A, typename F>
63
- size_t median3 (const A &array, size_t a, size_t b, size_t c, const F &is_less) {
63
+ LIBC_INLINE size_t median3 (const A &array, size_t a, size_t b, size_t c,
64
+ const F &is_less) {
64
65
const void *a_ptr = array.get (a);
65
66
const void *b_ptr = array.get (b);
66
67
const void *c_ptr = array.get (c);
0 commit comments