Changes in libcfa/src/heap.cfa [f76ff0b:c86f587]
- File:
-
- 1 edited
-
libcfa/src/heap.cfa (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/heap.cfa
rf76ff0b rc86f587 1239 1239 size_t odsize = dataStorage( bsize, oaddr, header ); // data storage available in bucket 1240 1240 1241 if ( oalign == nalign && size <= odsize && odsize <= size * 2 ) { // <= alignment and new alignment are same, allow 50% wasted storage for smaller size 1242 header->kind.real.blockSize &= -2; // turn off 0 fill 1243 header->kind.real.size = size; // reset allocation size 1244 return oaddr; 1245 } // if 1246 if ( oalign < nalign && (uintptr_t)oaddr % nalign == 0 && oalign > libAlign() ) { // <= alignment and new alignment happens to match, and oaddr has a fake header 1247 headerAddr( oaddr )->kind.fake.alignment = nalign | 1; // update alignment (could be the same) 1241 if ( oalign <= nalign && (uintptr_t)oaddr % nalign == 0 ) { // <= alignment and new alignment happens to match 1242 if ( oalign > libAlign() ) { // fake header ? 1243 headerAddr( oaddr )->kind.fake.alignment = nalign | 1; // update alignment (could be the same) 1244 } // if 1248 1245 if ( size <= odsize && odsize <= size * 2 ) { // allow 50% wasted storage for smaller size 1249 1246 header->kind.real.blockSize &= -2; // turn off 0 fill … … 1285 1282 headers( "realloc", oaddr, header, freeElem, bsize, oalign ); 1286 1283 1287 if ( oalign == nalign ) { // <= alignment and new alignment are same 1288 return realloc( oaddr, size ); 1289 } // if 1290 if ( oalign < nalign && (uintptr_t)oaddr % nalign == 0 && oalign > libAlign() ) { // <= alignment and new alignment happens to match, and oaddr has a fake header 1291 headerAddr( oaddr )->kind.fake.alignment = nalign | 1; // update alignment (could be the same) 1284 if ( oalign <= nalign && (uintptr_t)oaddr % nalign == 0 ) { // <= alignment and new alignment happens to match 1285 if ( oalign > libAlign() ) { // fake header ? 1286 headerAddr( oaddr )->kind.fake.alignment = nalign | 1; // update alignment (could be the same) 1287 } // if 1292 1288 return realloc( oaddr, size ); 1293 1289 } // if
Note:
See TracChangeset
for help on using the changeset viewer.