コード例 #1
0
DOH *DohObjMalloc(DohObjInfo *type, void *data) {
  DohBase *obj;
  if (!pools_initialized)
    InitPools();
#ifndef DOH_DEBUG_MEMORY_POOLS
  if (FreeList) {
    obj = FreeList;
    FreeList = (DohBase *) obj->data;
  } else {
#endif
    while (Pools->current == Pools->len) {
      CreatePool();
    }
    obj = Pools->ptr + Pools->current;
    ++Pools->current;
#ifndef DOH_DEBUG_MEMORY_POOLS
  }
#endif
  obj->type = type;
  obj->data = data;
  obj->meta = 0;
  obj->refcount = 1;
  obj->flag_intern = 0;
  obj->flag_marked = 0;
  obj->flag_user = 0;
  obj->flag_usermark = 0;
  return (DOH *) obj;
}
コード例 #2
0
ファイル: Patch.cpp プロジェクト: amitamitamitamit/spring
void CTriNodePool::ResetAll()
{
	bool ranOutOfNodes = false;
	for (CTriNodePool* p: pools) {
		ranOutOfNodes |= p->RunOutOfNodes();
		p->Reset();
	}

	if (ranOutOfNodes && (poolSize < MAX_POOL_SIZE)) {
		FreePools();
		InitPools(std::min(poolSize * 2, size_t(MAX_POOL_SIZE)));
	}
}