Changes in / [70cab43:a77496cb]
- Files:
-
- 1 deleted
- 3 edited
-
libcfa/src/stdlib.hfa (modified) (4 diffs)
-
tests/.expect/alloc-old.txt (deleted)
-
tests/.expect/alloc.txt (modified) (1 diff)
-
tests/malloc.cfa (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/stdlib.hfa
r70cab43 ra77496cb 43 43 //--------------------------------------- 44 44 45 // Macro because of returns 46 #define $VAR_ALLOC( allocation, alignment ) \ 47 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)allocation( (size_t)sizeof(T) ); /* C allocation */ \ 48 else return (T *)alignment( _Alignof(T), sizeof(T) ) 49 45 50 #define $ARRAY_ALLOC( allocation, alignment, dim ) \ 46 51 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)allocation( dim, (size_t)sizeof(T) ); /* C allocation */ \ 47 52 else return (T *)alignment( _Alignof(T), dim, sizeof(T) ) 48 53 54 #define $RE_SPECIALS( ptr, size, allocation, alignment ) \ 55 if ( unlikely( size == 0 ) || unlikely( ptr == 0p ) ) { \ 56 if ( unlikely( size == 0 ) ) free( ptr ); \ 57 $VAR_ALLOC( malloc, memalign ); \ 58 } /* if */ 59 49 60 static inline forall( dtype T | sized(T) ) { 50 61 // Cforall safe equivalents, i.e., implicit size specification 51 62 52 63 T * malloc( void ) { 53 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)malloc( (size_t)sizeof(T) ); /* C allocation */ 54 else return (T *)memalign( _Alignof(T), sizeof(T) ); 64 $VAR_ALLOC( malloc, memalign ); 55 65 } // malloc 56 66 … … 64 74 65 75 T * resize( T * ptr, size_t size ) { // CFA resize, eliminate return-type cast 76 $RE_SPECIALS( ptr, size, malloc, memalign ); 66 77 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)resize( (void *)ptr, size ); // CFA resize 67 78 else return (T *)(void *)resize( (void *)ptr, _Alignof(T), size ); // CFA resize … … 69 80 70 81 T * realloc( T * ptr, size_t size ) { // CFA realloc, eliminate return-type cast 82 $RE_SPECIALS( ptr, size, malloc, memalign ); 71 83 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)realloc( (void *)ptr, size ); // C realloc 72 84 else return (T *)(void *)realloc( (void *)ptr, _Alignof(T), size ); // CFA realloc … … 176 188 size_t size = sizeof(T); 177 189 size_t copy_end = 0; 190 178 191 if(Resize) { 179 //printf("1. $alloc_internal got: %p %p %lu %lu\n", Resize, Realloc, Align, Dim); // these prints are temporary 180 ptr = (T*) (void *) resize( (void *)Resize, Align, Dim * size ); 192 ptr = (T*) (void *) resize( (int *)Resize, Align, Dim * size ); 181 193 } else if (Realloc) { 182 194 if (Fill.tag != '0') copy_end = min(malloc_size( Realloc ), Dim * size); 183 //printf("2. $alloc_internal got: %p %p %lu %lu\n", Resize, Realloc, Align, Dim); 184 ptr = (T*) (void *) realloc( (void *)Realloc, Align, Dim * size ); 195 ptr = (T*) (void *) realloc( (int *)Realloc, Align, Dim * size ); 185 196 } else { 186 //printf("3. $alloc_internal got: %p %p %lu %lu\n", Resize, Realloc, Align, Dim);187 197 ptr = (T*) (void *) memalign( Align, Dim * size ); 188 198 } -
tests/.expect/alloc.txt
r70cab43 ra77496cb 14 14 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 15 15 CFA array alloc, fill 0xef 16 0x deadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef16 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 17 17 CFA array alloc, fill from array 18 0x deadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef,18 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 19 19 20 20 C realloc 21 0x deadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef21 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 22 22 CFA realloc 23 0x deadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x101010123 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 24 24 25 25 CFA realloc array alloc -
tests/malloc.cfa
r70cab43 ra77496cb 348 348 free(ip); 349 349 350 ip = resize( (int*)0p, size );351 test_base(ip, size, libAlign); 352 test_use(ip); 353 free(ip); 354 355 ip = resize( (int*)0p, size );350 ip = resize( NULL, size ); 351 test_base(ip, size, libAlign); 352 test_use(ip); 353 free(ip); 354 355 ip = resize( 0p, size ); 356 356 test_base(ip, size, libAlign); 357 357 test_use(ip); … … 378 378 free(ip); 379 379 380 ip = realloc( (int*)0p, size );380 ip = realloc( NULL, size ); 381 381 test_base(ip, size , libAlign); 382 382 test_use(ip); 383 383 free(ip); 384 384 385 ip = realloc( (int*)0p, size );385 ip = realloc( 0p, size ); 386 386 test_base(ip, size, libAlign); 387 387 test_use(ip); … … 488 488 free(tp); 489 489 490 tp = resize( (T1*)0p, size );490 tp = resize( NULL, size ); 491 491 test_base(tp, size, tAlign ); 492 492 test_use(tp); 493 493 free(tp); 494 494 495 tp = resize( (T1*)0p, size );495 tp = resize( 0p, size ); 496 496 test_base(tp, size, tAlign ); 497 497 test_use(tp); … … 518 518 free(tp); 519 519 520 /* 521 tp = realloc( (T1*)0p, size ); 522 est_base(tp, size , tAlign ); 523 est_use(tp); 524 free(tp); 525 526 tp = realloc( (T1*)0p, size ); 527 est_base(tp, size, tAlign ); 528 est_use(tp); 529 free(tp); 530 */ 520 tp = realloc( NULL, size ); 521 test_base(tp, size , tAlign ); 522 test_use(tp); 523 free(tp); 524 525 tp = realloc( 0p, size ); 526 test_base(tp, size, tAlign ); 527 test_use(tp); 528 free(tp); 531 529 532 530 tp = memalign( align ); … … 561 559 free(tp); 562 560 563 (int) posix_memalign( ( T1**) &tp, align );561 (int) posix_memalign( (int **) &tp, align ); 564 562 test_base(tp, elemSize, align); 565 563 test_use(tp);
Note:
See TracChangeset
for help on using the changeset viewer.