@@ -227,113 +227,3 @@ impl Profiler {
227
227
if let Ok ( ( ) ) = self . data . add ( frames, 1 ) { }
228
228
}
229
229
}
230
-
231
- #[ cfg( test) ]
232
- #[ cfg( target_os = "linux" ) ]
233
- mod tests {
234
- use super :: * ;
235
-
236
- use std:: cell:: RefCell ;
237
- use std:: ffi:: c_void;
238
- use std:: ptr:: null_mut;
239
-
240
- #[ cfg( not( target_env = "gnu" ) ) ]
241
- #[ allow( clippy:: wrong_self_convention) ]
242
- #[ allow( non_upper_case_globals) ]
243
- static mut __malloc_hook: Option < extern "C" fn ( size : usize ) -> * mut c_void > = None ;
244
-
245
- extern "C" {
246
- #[ cfg( target_env = "gnu" ) ]
247
- static mut __malloc_hook: Option < extern "C" fn ( size : usize ) -> * mut c_void > ;
248
-
249
- fn malloc ( size : usize ) -> * mut c_void ;
250
- }
251
-
252
- thread_local ! {
253
- static FLAG : RefCell <bool > = RefCell :: new( false ) ;
254
- }
255
-
256
- extern "C" fn malloc_hook ( size : usize ) -> * mut c_void {
257
- unsafe {
258
- __malloc_hook = None ;
259
- }
260
-
261
- FLAG . with ( |flag| {
262
- flag. replace ( true ) ;
263
- } ) ;
264
- let p = unsafe { malloc ( size) } ;
265
-
266
- unsafe {
267
- __malloc_hook = Some ( malloc_hook) ;
268
- }
269
-
270
- p
271
- }
272
-
273
- #[ inline( never) ]
274
- fn is_prime_number ( v : usize , prime_numbers : & [ usize ] ) -> bool {
275
- if v < 10000 {
276
- let r = prime_numbers. binary_search ( & v) ;
277
- return r. is_ok ( ) ;
278
- }
279
-
280
- for n in prime_numbers {
281
- if v % n == 0 {
282
- return false ;
283
- }
284
- }
285
-
286
- true
287
- }
288
-
289
- #[ inline( never) ]
290
- fn prepare_prime_numbers ( ) -> Vec < usize > {
291
- // bootstrap: Generate a prime table of 0..10000
292
- let mut prime_number_table: [ bool ; 10000 ] = [ true ; 10000 ] ;
293
- prime_number_table[ 0 ] = false ;
294
- prime_number_table[ 1 ] = false ;
295
- for i in 2 ..10000 {
296
- if prime_number_table[ i] {
297
- let mut v = i * 2 ;
298
- while v < 10000 {
299
- prime_number_table[ v] = false ;
300
- v += i;
301
- }
302
- }
303
- }
304
- let mut prime_numbers = vec ! [ ] ;
305
- for ( i, item) in prime_number_table. iter ( ) . enumerate ( ) . skip ( 2 ) {
306
- if * item {
307
- prime_numbers. push ( i) ;
308
- }
309
- }
310
- prime_numbers
311
- }
312
-
313
- #[ cfg( target_os = "linux" ) ]
314
- #[ test]
315
- fn malloc_free ( ) {
316
- trigger_lazy ( ) ;
317
-
318
- let prime_numbers = prepare_prime_numbers ( ) ;
319
-
320
- let mut _v = 0 ;
321
-
322
- unsafe {
323
- __malloc_hook = Some ( malloc_hook) ;
324
- }
325
- for i in 2 ..50000 {
326
- if is_prime_number ( i, & prime_numbers) {
327
- _v += 1 ;
328
- perf_signal_handler ( 27 , null_mut ( ) , null_mut ( ) ) ;
329
- }
330
- }
331
- unsafe {
332
- __malloc_hook = None ;
333
- }
334
-
335
- FLAG . with ( |flag| {
336
- assert ! ( !* flag. borrow( ) ) ;
337
- } ) ;
338
- }
339
- }
0 commit comments