| 2328 | } |
| 2329 | |
| 2330 | MemBlock* MemPool::allocateRange(size_t from, size_t& size |
| 2331 | #ifdef DEBUG_GDS_ALLOC |
| 2332 | , const char* fileName, int line |
| 2333 | #endif |
| 2334 | ) |
| 2335 | { |
| 2336 | size_t length = from ? size : ROUNDUP(size + VALGRIND_REDZONE, roundingSize) + GUARD_BYTES; |
| 2337 | MemBlock* memory = allocateInternal(from, length, true); |
| 2338 | size = length - (VALGRIND_REDZONE + GUARD_BYTES); |
| 2339 | memory->pool = this; |
| 2340 | |
| 2341 | #ifdef USE_VALGRIND |
| 2342 | VALGRIND_MEMPOOL_ALLOC(this, &memory->body, size); |
| 2343 | #endif |
| 2344 | |
| 2345 | #ifdef DEBUG_GDS_ALLOC |
| 2346 | memory->fileName = fileName; |
| 2347 | memory->lineNumber = line; |
| 2348 | #endif |
| 2349 | |
| 2350 | #ifdef MEM_DEBUG |
| 2351 | memset(&memory->body, INIT_BYTE, size); |
| 2352 | memset(&memory->body + size, GUARD_BYTE, memory->getSize() - offsetof(MemBlock,body) - size); |
| 2353 | #endif |
| 2354 | |
| 2355 | fb_assert((U_IPTR)(&memory->body) % ALLOC_ALIGNMENT == 0); |
| 2356 | return memory; |
| 2357 | } |
| 2358 | |
| 2359 | |
| 2360 | void* MemPool::allocate(size_t size ALLOC_PARAMS) |