Changeset 68f0c4e
- Timestamp:
- Sep 1, 2020, 8:05:48 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 70cab43
- Parents:
- d3aa64f1
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified libcfa/src/stdlib.hfa ¶
rd3aa64f1 r68f0c4e 43 43 //--------------------------------------- 44 44 45 // Macro because of returns46 #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 50 45 #define $ARRAY_ALLOC( allocation, alignment, dim ) \ 51 46 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)allocation( dim, (size_t)sizeof(T) ); /* C allocation */ \ 52 47 else return (T *)alignment( _Alignof(T), dim, sizeof(T) ) 53 48 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 60 49 static inline forall( dtype T | sized(T) ) { 61 50 // Cforall safe equivalents, i.e., implicit size specification 62 51 63 52 T * malloc( void ) { 64 $VAR_ALLOC( malloc, memalign ); 53 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)malloc( (size_t)sizeof(T) ); /* C allocation */ 54 else return (T *)memalign( _Alignof(T), sizeof(T) ); 65 55 } // malloc 66 56 … … 74 64 75 65 T * resize( T * ptr, size_t size ) { // CFA resize, eliminate return-type cast 76 $RE_SPECIALS( ptr, size, malloc, memalign );77 66 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)resize( (void *)ptr, size ); // CFA resize 78 67 else return (T *)(void *)resize( (void *)ptr, _Alignof(T), size ); // CFA resize … … 80 69 81 70 T * realloc( T * ptr, size_t size ) { // CFA realloc, eliminate return-type cast 82 $RE_SPECIALS( ptr, size, malloc, memalign );83 71 if ( _Alignof(T) <= libAlign() ) return (T *)(void *)realloc( (void *)ptr, size ); // C realloc 84 72 else return (T *)(void *)realloc( (void *)ptr, _Alignof(T), size ); // CFA realloc … … 188 176 size_t size = sizeof(T); 189 177 size_t copy_end = 0; 190 191 178 if(Resize) { 192 ptr = (T*) (void *) resize( (int *)Resize, Align, Dim * size ); 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 ); 193 181 } else if (Realloc) { 194 182 if (Fill.tag != '0') copy_end = min(malloc_size( Realloc ), Dim * size); 195 ptr = (T*) (void *) realloc( (int *)Realloc, Align, 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 ); 196 185 } else { 186 //printf("3. $alloc_internal got: %p %p %lu %lu\n", Resize, Realloc, Align, Dim); 197 187 ptr = (T*) (void *) memalign( Align, Dim * size ); 198 188 } -
TabularUnified tests/.expect/alloc.txt ¶
rd3aa64f1 r68f0c4e 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 efefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef16 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 17 17 CFA array alloc, fill from array 18 0x efefefef 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,18 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 0xdeadbeef, 19 19 20 20 C realloc 21 0x efefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef21 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 22 22 CFA realloc 23 0x efefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x101010123 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 24 24 25 25 CFA realloc array alloc -
TabularUnified tests/malloc.cfa ¶
rd3aa64f1 r68f0c4e 348 348 free(ip); 349 349 350 ip = resize( NULL, size );351 test_base(ip, size, libAlign); 352 test_use(ip); 353 free(ip); 354 355 ip = resize( 0p, size );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 ); 356 356 test_base(ip, size, libAlign); 357 357 test_use(ip); … … 378 378 free(ip); 379 379 380 ip = realloc( NULL, size );380 ip = realloc( (int*)0p, size ); 381 381 test_base(ip, size , libAlign); 382 382 test_use(ip); 383 383 free(ip); 384 384 385 ip = realloc( 0p, size );385 ip = realloc( (int*)0p, size ); 386 386 test_base(ip, size, libAlign); 387 387 test_use(ip); … … 488 488 free(tp); 489 489 490 tp = resize( NULL, size );490 tp = resize( (T1*)0p, size ); 491 491 test_base(tp, size, tAlign ); 492 492 test_use(tp); 493 493 free(tp); 494 494 495 tp = resize( 0p, size );495 tp = resize( (T1*)0p, size ); 496 496 test_base(tp, size, tAlign ); 497 497 test_use(tp); … … 518 518 free(tp); 519 519 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); 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 */ 529 531 530 532 tp = memalign( align ); … … 559 561 free(tp); 560 562 561 (int) posix_memalign( ( int**) &tp, align );563 (int) posix_memalign( (T1 **) &tp, align ); 562 564 test_base(tp, elemSize, align); 563 565 test_use(tp);
Note: See TracChangeset
for help on using the changeset viewer.