Changes in tests/heap.cfa [5dc5da7:58e280f4]
- File:
-
- 1 edited
-
tests/heap.cfa (modified) (30 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/heap.cfa
r5dc5da7 r58e280f4 10 10 // Created On : Tue Nov 6 17:54:56 2018 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 15 12:11:51 202013 // Update Count : 7912 // Last Modified On : Sun Nov 24 12:34:51 2019 13 // Update Count : 28 14 14 // 15 15 … … 27 27 // } 28 28 29 size_t default_heap_expansion() { 30 return 10 * 1024 * 1024; 31 } // default_heap_expansion 32 33 size_t default_mmap_start() { 34 return 512 * 1024 + 1; 29 #define __U_DEFAULT_MMAP_START__ (512 * 1024 + 1) 30 size_t default_mmap_start() __attribute__(( weak )) { 31 return __U_DEFAULT_MMAP_START__; 35 32 } // default_mmap_start 36 33 … … 78 75 size_t s = (i + 1) * 20; 79 76 char * area = (char *)malloc( s ); 77 if ( area == 0p ) abort( "malloc/free out of memory" ); 80 78 area[0] = '\345'; area[s - 1] = '\345'; // fill first/last 81 79 area[malloc_usable_size( area ) - 1] = '\345'; // fill ultimate byte … … 86 84 size_t s = i + 1; // +1 to make initialization simpler 87 85 locns[i] = (char *)malloc( s ); 86 if ( locns[i] == 0p ) abort( "malloc/free out of memory" ); 88 87 locns[i][0] = '\345'; locns[i][s - 1] = '\345'; // fill first/last 89 88 locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte … … 101 100 size_t s = i + default_mmap_start(); // cross over point 102 101 char * area = (char *)malloc( s ); 102 if ( area == 0p ) abort( "malloc/free out of memory" ); 103 103 area[0] = '\345'; area[s - 1] = '\345'; // fill first/last 104 104 area[malloc_usable_size( area ) - 1] = '\345'; // fill ultimate byte … … 109 109 size_t s = i + default_mmap_start(); // cross over point 110 110 locns[i] = (char *)malloc( s ); 111 if ( locns[i] == 0p ) abort( "malloc/free out of memory" ); 111 112 locns[i][0] = '\345'; locns[i][s - 1] = '\345'; // fill first/last 112 113 locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte … … 124 125 size_t s = (i + 1) * 20; 125 126 char * area = (char *)calloc( 5, s ); 127 if ( area == 0p ) abort( "calloc/free out of memory" ); 126 128 if ( area[0] != '\0' || area[s - 1] != '\0' || 127 area[malloc_ size( area ) - 1] != '\0' ||129 area[malloc_usable_size( area ) - 1] != '\0' || 128 130 ! malloc_zero_fill( area ) ) abort( "calloc/free corrupt storage1" ); 129 131 area[0] = '\345'; area[s - 1] = '\345'; // fill first/last … … 135 137 size_t s = i + 1; 136 138 locns[i] = (char *)calloc( 5, s ); 139 if ( locns[i] == 0p ) abort( "calloc/free out of memory" ); 137 140 if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' || 138 locns[i][malloc_ size( locns[i] ) - 1] != '\0' ||141 locns[i][malloc_usable_size( locns[i] ) - 1] != '\0' || 139 142 ! malloc_zero_fill( locns[i] ) ) abort( "calloc/free corrupt storage2" ); 140 143 locns[i][0] = '\345'; locns[i][s - 1] = '\345'; // fill first/last … … 153 156 size_t s = i + default_mmap_start(); // cross over point 154 157 char * area = (char *)calloc( 1, s ); 158 if ( area == 0p ) abort( "calloc/free out of memory" ); 155 159 if ( area[0] != '\0' || area[s - 1] != '\0' ) abort( "calloc/free corrupt storage4.1" ); 156 if ( area[malloc_ size( area ) - 1] != '\0' ) abort( "calloc/free corrupt storage4.2" );160 if ( area[malloc_usable_size( area ) - 1] != '\0' ) abort( "calloc/free corrupt storage4.2" ); 157 161 if ( ! malloc_zero_fill( area ) ) abort( "calloc/free corrupt storage4.3" ); 158 162 area[0] = '\345'; area[s - 1] = '\345'; // fill first/last … … 164 168 size_t s = i + default_mmap_start(); // cross over point 165 169 locns[i] = (char *)calloc( 1, s ); 170 if ( locns[i] == 0p ) abort( "calloc/free out of memory" ); 166 171 if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' || 167 locns[i][malloc_ size( locns[i] ) - 1] != '\0' ||172 locns[i][malloc_usable_size( locns[i] ) - 1] != '\0' || 168 173 ! malloc_zero_fill( locns[i] ) ) abort( "calloc/free corrupt storage5" ); 169 174 locns[i][0] = '\345'; locns[i][s - 1] = '\345'; // fill first/last … … 183 188 for ( s; 1 ~ NoOfAllocs ) { // allocation of size 0 can return null 184 189 char * area = (char *)memalign( a, s ); 190 if ( area == 0p ) abort( "memalign/free out of memory" ); 185 191 //sout | i | area; 186 192 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment … … 200 206 size_t s = i + default_mmap_start(); // cross over point 201 207 char * area = (char *)memalign( a, s ); 208 if ( area == 0p ) abort( "memalign/free out of memory" ); 202 209 //sout | i | area; 203 210 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment … … 210 217 } // for 211 218 212 // check malloc/resize/free (sbrk)213 214 for ( i; 2 ~ NoOfAllocs ~ 12 ) {215 // initial N byte allocation216 char * area = (char *)malloc( i );217 area[0] = '\345'; area[i - 1] = '\345'; // fill first/penultimate byte218 219 // Do not start this loop index at 0 because resize of 0 bytes frees the storage.220 int prev = i;221 for ( s; i ~ 256 * 1024 ~ 26 ) { // start at initial memory request222 if ( area[0] != '\345' || area[prev - 1] != '\345' ) abort( "malloc/resize/free corrupt storage" );223 area = (char *)resize( area, s ); // attempt to reuse storage224 area[0] = area[s - 1] = '\345'; // fill last byte225 prev = s;226 } // for227 free( area );228 } // for229 230 // check malloc/resize/free (mmap)231 232 for ( i; 2 ~ NoOfAllocs ~ 12 ) {233 // initial N byte allocation234 size_t s = i + default_mmap_start(); // cross over point235 char * area = (char *)malloc( s );236 area[0] = '\345'; area[s - 1] = '\345'; // fill first/penultimate byte237 238 // Do not start this loop index at 0 because resize of 0 bytes frees the storage.239 int prev = s;240 for ( r; s ~ 256 * 1024 ~ 26 ) { // start at initial memory request241 if ( area[0] != '\345' || area[prev - 1] != '\345' ) abort( "malloc/resize/free corrupt storage" );242 area = (char *)resize( area, s ); // attempt to reuse storage243 area[0] = area[r - 1] = '\345'; // fill last byte244 prev = r;245 } // for246 free( area );247 } // for248 249 // check malloc/realloc/free (sbrk)250 251 for ( i; 2 ~ NoOfAllocs ~ 12 ) {252 // initial N byte allocation253 char * area = (char *)malloc( i );254 area[0] = '\345'; area[i - 1] = '\345'; // fill first/penultimate byte255 256 // Do not start this loop index at 0 because realloc of 0 bytes frees the storage.257 int prev = i;258 for ( s; i ~ 256 * 1024 ~ 26 ) { // start at initial memory request259 if ( area[0] != '\345' || area[prev - 1] != '\345' ) abort( "malloc/realloc/free corrupt storage" );260 area = (char *)realloc( area, s ); // attempt to reuse storage261 area[s - 1] = '\345'; // fill last byte262 prev = s;263 } // for264 free( area );265 } // for266 267 // check malloc/realloc/free (mmap)268 269 for ( i; 2 ~ NoOfAllocs ~ 12 ) {270 // initial N byte allocation271 size_t s = i + default_mmap_start(); // cross over point272 char * area = (char *)malloc( s );273 area[0] = '\345'; area[s - 1] = '\345'; // fill first/penultimate byte274 275 // Do not start this loop index at 0 because realloc of 0 bytes frees the storage.276 int prev = s;277 for ( r; s ~ 256 * 1024 ~ 26 ) { // start at initial memory request278 if ( area[0] != '\345' || area[prev - 1] != '\345' ) abort( "malloc/realloc/free corrupt storage" );279 area = (char *)realloc( area, s ); // attempt to reuse storage280 area[r - 1] = '\345'; // fill last byte281 prev = r;282 } // for283 free( area );284 } // for285 286 219 // check calloc/realloc/free (sbrk) 287 220 … … 289 222 // initial N byte allocation 290 223 char * area = (char *)calloc( 5, i ); 224 if ( area == 0p ) abort( "calloc/realloc/free out of memory" ); 291 225 if ( area[0] != '\0' || area[i - 1] != '\0' || 292 area[malloc_ size( area ) - 1] != '\0' ||226 area[malloc_usable_size( area ) - 1] != '\0' || 293 227 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage1" ); 294 228 … … 296 230 for ( s; i ~ 256 * 1024 ~ 26 ) { // start at initial memory request 297 231 area = (char *)realloc( area, s ); // attempt to reuse storage 232 if ( area == 0p ) abort( "calloc/realloc/free out of memory" ); 298 233 if ( area[0] != '\0' || area[s - 1] != '\0' || 299 area[malloc_ size( area ) - 1] != '\0' ||234 area[malloc_usable_size( area ) - 1] != '\0' || 300 235 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage2" ); 301 236 } // for … … 309 244 size_t s = i + default_mmap_start(); // cross over point 310 245 char * area = (char *)calloc( 1, s ); 246 if ( area == 0p ) abort( "calloc/realloc/free out of memory" ); 311 247 if ( area[0] != '\0' || area[s - 1] != '\0' || 312 area[malloc_ size( area ) - 1] != '\0' ||313 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage 3" );248 area[malloc_usable_size( area ) - 1] != '\0' || 249 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage1" ); 314 250 315 251 // Do not start this loop index at 0 because realloc of 0 bytes frees the storage. 316 252 for ( r; i ~ 256 * 1024 ~ 26 ) { // start at initial memory request 317 253 area = (char *)realloc( area, r ); // attempt to reuse storage 254 if ( area == 0p ) abort( "calloc/realloc/free out of memory" ); 318 255 if ( area[0] != '\0' || area[r - 1] != '\0' || 319 area[malloc_ size( area ) - 1] != '\0' ||320 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage 4" );256 area[malloc_usable_size( area ) - 1] != '\0' || 257 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage2" ); 321 258 } // for 322 259 free( area ); … … 329 266 // initial N byte allocation 330 267 char * area = (char *)memalign( a, amount ); // aligned N-byte allocation 268 if ( area == 0p ) abort( "memalign/realloc/free out of memory" ); // no storage ? 331 269 //sout | alignments[a] | area; 332 270 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment … … 339 277 if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "memalign/realloc/free corrupt storage" ); 340 278 area = (char *)realloc( area, s ); // attempt to reuse storage 279 if ( area == 0p ) abort( "memalign/realloc/free out of memory" ); // no storage ? 341 280 //sout | i | area; 342 281 if ( (size_t)area % a != 0 ) { // check for initial alignment … … 354 293 for ( s; 1 ~ limit ) { // allocation of size 0 can return null 355 294 char * area = (char *)cmemalign( a, 1, s ); 295 if ( area == 0p ) abort( "cmemalign/free out of memory" ); 356 296 //sout | i | area; 357 297 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment … … 359 299 } // if 360 300 if ( area[0] != '\0' || area[s - 1] != '\0' || 361 area[malloc_ size( area ) - 1] != '\0' ||301 area[malloc_usable_size( area ) - 1] != '\0' || 362 302 ! malloc_zero_fill( area ) ) abort( "cmemalign/free corrupt storage" ); 363 303 area[0] = '\345'; area[s - 1] = '\345'; // fill first/last byte … … 372 312 // initial N byte allocation 373 313 char * area = (char *)cmemalign( a, 1, amount ); // aligned N-byte allocation 314 if ( area == 0p ) abort( "cmemalign/realloc/free out of memory" ); // no storage ? 374 315 //sout | alignments[a] | area; 375 316 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment … … 377 318 } // if 378 319 if ( area[0] != '\0' || area[amount - 1] != '\0' || 379 area[malloc_ size( area ) - 1] != '\0' ||320 area[malloc_usable_size( area ) - 1] != '\0' || 380 321 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage1" ); 381 322 area[0] = '\345'; area[amount - 2] = '\345'; // fill first/penultimate byte … … 385 326 if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "cmemalign/realloc/free corrupt storage2" ); 386 327 area = (char *)realloc( area, s ); // attempt to reuse storage 328 if ( area == 0p ) abort( "cmemalign/realloc/free out of memory" ); // no storage ? 387 329 //sout | i | area; 388 330 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment 389 331 abort( "cmemalign/realloc/free bad alignment %p", area ); 390 332 } // if 391 if ( area[ 0] != '\345' || area[s - 1] != '\0' ||392 area[malloc_ size( area ) - 1] != '\0' ||333 if ( area[s - 1] != '\0' || area[s - 1] != '\0' || 334 area[malloc_usable_size( area ) - 1] != '\0' || 393 335 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage3" ); 394 336 area[s - 1] = '\345'; // fill last byte … … 397 339 } // for 398 340 399 // check memalign/re sizewith align/free341 // check memalign/realloc with align/free 400 342 401 343 amount = 2; … … 403 345 // initial N byte allocation 404 346 char * area = (char *)memalign( a, amount ); // aligned N-byte allocation 405 //sout | alignments[a] | area | endl; 406 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment 407 abort( "memalign/resize with align/free bad alignment : memalign(%d,%d) = %p", (int)a, (int)amount, area ); 408 } // if 409 area[0] = '\345'; area[amount - 2] = '\345'; // fill first/penultimate byte 410 411 // Do not start this loop index at 0 because resize of 0 bytes frees the storage. 412 for ( s; amount ~ 256 * 1024 ) { // start at initial memory request 413 area = (char *)resize( area, a * 2, s ); // attempt to reuse storage 414 //sout | i | area | endl; 415 if ( (size_t)area % a * 2 != 0 ) { // check for initial alignment 416 abort( "memalign/resize with align/free bad alignment %p", area ); 417 } // if 418 area[s - 1] = '\345'; // fill last byte 419 } // for 420 free( area ); 421 } // for 422 423 // check memalign/realloc with align/free 424 425 amount = 2; 426 for ( a; libAlign() ~= limit ~ a ) { // generate powers of 2 427 // initial N byte allocation 428 char * area = (char *)memalign( a, amount ); // aligned N-byte allocation 347 if ( area == 0p ) abort( "memalign/realloc with align/free out of memory" ); // no storage ? 429 348 //sout | alignments[a] | area | endl; 430 349 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment … … 437 356 if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "memalign/realloc/free corrupt storage" ); 438 357 area = (char *)realloc( area, a * 2, s ); // attempt to reuse storage 358 if ( area == 0p ) abort( "memalign/realloc with align/free out of memory" ); // no storage ? 439 359 //sout | i | area | endl; 440 360 if ( (size_t)area % a * 2 != 0 ) { // check for initial alignment … … 451 371 for ( size_t a = libAlign() + libAlign(); a <= limit; a += a ) { // generate powers of 2 452 372 // initial N byte allocation 453 char * area = (char *)cmemalign( a, 1, amount ); // aligned N-byte allocation 373 char *area = (char *)cmemalign( a, 1, amount ); // aligned N-byte allocation 374 if ( area == 0p ) abort( "cmemalign/realloc with align/free out of memory" ); // no storage ? 454 375 //sout | alignments[a] | area | endl; 455 376 if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment … … 457 378 } // if 458 379 if ( area[0] != '\0' || area[amount - 1] != '\0' || 459 area[malloc_ size( area ) - 1] != '\0' ||380 area[malloc_usable_size( area ) - 1] != '\0' || 460 381 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc with align/free corrupt storage1" ); 461 382 area[0] = '\345'; area[amount - 2] = '\345'; // fill first/penultimate byte … … 465 386 if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "cmemalign/realloc with align/free corrupt storage2" ); 466 387 area = (char *)realloc( area, a * 2, s ); // attempt to reuse storage 388 if ( area == 0p ) abort( "cmemalign/realloc with align/free out of memory" ); // no storage ? 467 389 //sout | i | area | endl; 468 390 if ( (size_t)area % a * 2 != 0 || malloc_alignment( area ) != a * 2 ) { // check for initial alignment 469 abort( "cmemalign/realloc with align/free bad alignment %p % zd %zd", area, malloc_alignment( area ), a * 2 );391 abort( "cmemalign/realloc with align/free bad alignment %p %jd %jd", area, malloc_alignment( area ), a * 2 ); 470 392 } // if 471 393 if ( area[s - 1] != '\0' || area[s - 1] != '\0' || 472 area[malloc_ size( area ) - 1] != '\0' ||394 area[malloc_usable_size( area ) - 1] != '\0' || 473 395 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage3" ); 474 396 area[s - 1] = '\345'; // fill last byte … … 488 410 // checkFreeOn(); 489 411 // malloc_stats(); 490 printf( "done\n" ); // non-empty .expect file491 412 } 492 413
Note:
See TracChangeset
for help on using the changeset viewer.