Skip to content

Commit 055fe19

Browse files
committed
add assertions to sort func
1 parent e05532a commit 055fe19

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

program/src/oracle/sort.c

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
#include "sort.h"
22

3+
#ifndef __bpf__
4+
#include <assert.h>
5+
#endif
6+
37
static inline void swap_int64( int64_t *a, int64_t *b )
48
{
59
int64_t const temp = *a;
@@ -9,6 +13,13 @@ static inline void swap_int64( int64_t *a, int64_t *b )
913

1014
static inline int partition_int64( int64_t* v, int i, int j )
1115
{
16+
#ifndef __bpf__
17+
#ifndef NDEBUG
18+
int const i0 = i;
19+
int const j0 = j;
20+
#endif
21+
#endif
22+
1223
int const p = i;
1324
int64_t const pv = v[ p ];
1425

@@ -24,6 +35,20 @@ static inline int partition_int64( int64_t* v, int i, int j )
2435
}
2536
}
2637
swap_int64( &v[ p ], &v[ j ] );
38+
39+
#ifndef __bpf__
40+
#ifndef NDEBUG
41+
int k;
42+
for ( k = i0; k < j; ++k ) {
43+
assert( v[ k ] <= pv );
44+
}
45+
assert( v[ j ] == pv );
46+
for ( k = j + 1; k <= j0; ++k ) {
47+
assert( v[ k ] > pv );
48+
}
49+
#endif
50+
#endif
51+
2752
return j;
2853
}
2954

@@ -40,5 +65,18 @@ static void qsort_help_int64( int64_t* const v, int i, int j )
4065
void qsort_int64( int64_t* const v, unsigned const size )
4166
{
4267
qsort_help_int64( v, 0, ( int )size - 1 );
68+
69+
#ifndef __bpf__
70+
#ifndef NDEBUG
71+
if ( size ) {
72+
int64_t x = v[ 0 ];
73+
unsigned i = 1;
74+
for ( ; i < size; ++i ) {
75+
assert( x <= v[ i ] );
76+
x = v[ i ];
77+
}
78+
}
79+
#endif
80+
#endif
4381
}
4482

program/src/oracle/sort.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#pragma once
22

3-
#ifdef __x86_64__
4-
#include <stdint.h>
5-
#else
3+
#ifdef __bpf__
64
#include <solana_sdk.h>
5+
#else
6+
#include <stdint.h>
77
#endif
88

99
#ifdef __cplusplus

0 commit comments

Comments
 (0)