MCPcopy Create free account
hub / github.com/Gecode/gecode / reuse

Method reuse

gecode/kernel/memory/manager.hpp:380–410  ·  view source on GitHub ↗

* Slack memory management * */

Source from the content-addressed store, hash-verified

378 *
379 */
380 forceinline void
381 MemoryManager::reuse(void* p, size_t s) {
382#ifdef GECODE_MEMORY_CHECK
383 {
384 char* c = static_cast<char*>(p);
385 char* e = c + s;
386 while (c < e) {
387 *c = 0; c++;
388 }
389 }
390#endif
391
392 size_t aligned_s = s;
393 void* aligned_p = std::align(std::min(static_cast<size_t>(GECODE_MEMORY_ALIGNMENT), s),
394 MemoryConfig::fl_size_min<<MemoryConfig::fl_unit_size,
395 p, aligned_s);
396
397 if (aligned_p==nullptr ||
398 aligned_s < (MemoryConfig::fl_size_min<<MemoryConfig::fl_unit_size))
399 return;
400 if (aligned_s > (MemoryConfig::fl_size_max<<MemoryConfig::fl_unit_size)) {
401 MemoryChunk* rc = static_cast<MemoryChunk*>(aligned_p);
402 rc->next = slack;
403 rc->size = aligned_s;
404 slack = rc;
405 } else {
406 size_t i = sz2i(aligned_s);
407 FreeList* f = static_cast<FreeList*>(aligned_p);
408 f->next(fl[i]); fl[i]=f;
409 }
410 }
411
412
413 /*

Callers 1

rfreeMethod · 0.80

Calls 3

alignFunction · 0.85
minFunction · 0.50
nextMethod · 0.45

Tested by

no test coverage detected