| 257 | |
| 258 | #ifdef VALIDATE_MEMORY_POOL |
| 259 | void |
| 260 | FreeIndex::validate_index(FreeIndex& index, unsigned char* base, bool log) |
| 261 | { |
| 262 | if (log) { |
| 263 | FreeIndexNode* node = index.nodes_; |
| 264 | while (node < index.nodes_ + index.size_) { |
| 265 | if (node->ptr()) { |
| 266 | ACE_OS::printf(" IND[%4d] -> %4d\n", node->size(), node->ptr()->size()); |
| 267 | } else { |
| 268 | ACE_OS::printf(" IND[%4d] -> NULL\n", node->size()); |
| 269 | } |
| 270 | ++node; |
| 271 | } |
| 272 | } |
| 273 | |
| 274 | // Validate searches of each size |
| 275 | for (size_t size = min_index; size <= max_index; size *= 2) { |
| 276 | // Find size or larger |
| 277 | FreeHeader* size_or_larger = index.find(size, base); |
| 278 | if (size_or_larger) { |
| 279 | TEST_CHECK(size_or_larger->size() >= size); |
| 280 | } |
| 281 | } |
| 282 | |
| 283 | // Validate each node points to a free block of the proper size; |
| 284 | for (FreeIndexNode* node = index.nodes_; node < index.nodes_ + index.size_; ++node) { |
| 285 | FreeHeader* block = node->ptr(); |
| 286 | if (block) { |
| 287 | // node should point to a free block of the proper size; |
| 288 | TEST_CHECK(node->contains(block->size())); |
| 289 | |
| 290 | FreeHeader* smaller = block; |
| 291 | while ((smaller = smaller->smaller_free(base))) { |
| 292 | // Anything smaller should be too small for this node |
| 293 | TEST_CHECK(smaller->size() < node->size()); |
| 294 | } |
| 295 | } |
| 296 | } |
| 297 | } |
| 298 | #endif |
| 299 | |
| 300 | MemoryPool::MemoryPool(unsigned int pool_size, size_t granularity) |
nothing calls this directly
no test coverage detected