13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Memory Pool Library 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * -------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Memory pool array class. 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Features of the pooled arrays: 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * - single indirection layer (grows exponentially) 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * - constant # elements per page 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * - recycles old indirection tables as element pages 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * - about 10% overhead on large arrays 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "dePoolArray.h" 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "deInt32.h" 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <stdlib.h> 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <string.h> 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \internal 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Create a new pool array. 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param pool Pool to allocate memory from. 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param elementSize Size of the element to be put in array. 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param Pointer to the created array, or null on failure. 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 433c827367444ee418f129b2c238299f49d3264554Jarkko PoyrydePoolArray* dePoolArray_create (deMemPool* pool, int elementSize) 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Alloc struct. */ 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolArray* arr = DE_POOL_NEW(pool, dePoolArray); 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (!arr) 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return DE_NULL; 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Init array. */ 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry memset(arr, 0, sizeof(dePoolArray)); 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr->pool = pool; 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr->elementSize = elementSize; 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return arr; 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \internal 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Ensure that the array can hold at least N elements. 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param arr Array pointer. 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param size Number of elements for which to reserve memory. 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param True on success, false on failure. 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 653c827367444ee418f129b2c238299f49d3264554Jarkko PoyrydeBool dePoolArray_reserve (dePoolArray* arr, int size) 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (size >= arr->capacity) 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void* oldPageTable = DE_NULL; 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int oldPageTableSize = 0; 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int newCapacity = deAlign32(size, 1 << DE_ARRAY_ELEMENTS_PER_PAGE_LOG2); 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int reqPageTableCapacity = newCapacity >> DE_ARRAY_ELEMENTS_PER_PAGE_LOG2; 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (arr->pageTableCapacity < reqPageTableCapacity) 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int newPageTableCapacity = deMax32(2*arr->pageTableCapacity, reqPageTableCapacity); 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void** newPageTable = (void**)deMemPool_alloc(arr->pool, newPageTableCapacity * sizeof(void*)); 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int i; 803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (!newPageTable) 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return DE_FALSE; 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 0; i < arr->pageTableCapacity; i++) 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry newPageTable[i] = arr->pageTable[i]; 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (; i < newPageTableCapacity; i++) 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry newPageTable[i] = DE_NULL; 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Grab information about old page table for recycling purposes. */ 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry oldPageTable = arr->pageTable; 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry oldPageTableSize = arr->pageTableCapacity * sizeof(void*); 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr->pageTable = newPageTable; 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr->pageTableCapacity = newPageTableCapacity; 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Allocate new pages. */ 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int pageAllocSize = arr->elementSize << DE_ARRAY_ELEMENTS_PER_PAGE_LOG2; 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int pageTableNdx = arr->capacity >> DE_ARRAY_ELEMENTS_PER_PAGE_LOG2; 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Allocate new pages from recycled old page table. */ 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry while (oldPageTableSize >= pageAllocSize) 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void* newPage = oldPageTable; 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(arr->pageTableCapacity > pageTableNdx); /* \todo [petri] is this always true? */ 1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(!arr->pageTable[pageTableNdx]); 1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr->pageTable[pageTableNdx++] = newPage; 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry oldPageTable = (void*)((deUint8*)oldPageTable + pageAllocSize); 1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry oldPageTableSize -= pageAllocSize; 1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Allocate the rest of the needed pages from the pool. */ 1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (; pageTableNdx < reqPageTableCapacity; pageTableNdx++) 1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void* newPage = deMemPool_alloc(arr->pool, pageAllocSize); 1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (!newPage) 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return DE_FALSE; 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(!arr->pageTable[pageTableNdx]); 1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr->pageTable[pageTableNdx] = newPage; 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr->capacity = pageTableNdx << DE_ARRAY_ELEMENTS_PER_PAGE_LOG2; 1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(arr->capacity >= newCapacity); 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return DE_TRUE; 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \internal 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Set the size of the array (also reserves capacity). 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param arr Array pointer. 1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param size New size of the array (in elements). 1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param True on success, false on failure. 1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 1413c827367444ee418f129b2c238299f49d3264554Jarkko PoyrydeBool dePoolArray_setSize (dePoolArray* arr, int size) 1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (!dePoolArray_reserve(arr, size)) 1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return DE_FALSE; 1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr->numElements = size; 1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return DE_TRUE; 1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1503c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDE_DECLARE_POOL_ARRAY(dePoolIntArray, int); 1513c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDE_DECLARE_POOL_ARRAY(dePoolInt16Array, deInt16); 1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \internal 1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Test array functionality. 1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid dePoolArray_selfTest (void) 1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deMemPool* pool = deMemPool_createRoot(DE_NULL, 0); 1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolIntArray* arr = dePoolIntArray_create(pool); 1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolInt16Array* arr16 = dePoolInt16Array_create(pool); 1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int i; 1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Test pushBack(). */ 1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 0; i < 5000; i++) 1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Dummy alloc to try to break alignments. */ 1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deMemPool_alloc(pool, 1); 1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolIntArray_pushBack(arr, i); 1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolInt16Array_pushBack(arr16, (deInt16)i); 1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolIntArray_getNumElements(arr) == 5000); 1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolInt16Array_getNumElements(arr16) == 5000); 1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 0; i < 5000; i++) 1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolIntArray_get(arr, i) == i); 1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolInt16Array_get(arr16, i) == i); 1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Test popBack(). */ 1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 0; i < 1000; i++) 1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolIntArray_popBack(arr) == (4999 - i)); 1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolInt16Array_popBack(arr16) == (4999 - i)); 1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolIntArray_getNumElements(arr) == 4000); 1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolInt16Array_getNumElements(arr16) == 4000); 1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 0; i < 4000; i++) 1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolIntArray_get(arr, i) == i); 1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolInt16Array_get(arr16, i) == i); 1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Test setSize(). */ 1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolIntArray_setSize(arr, 1000); 1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolInt16Array_setSize(arr16, 1000); 2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 1000; i < 5000; i++) 2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolIntArray_pushBack(arr, i); 2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolInt16Array_pushBack(arr16, (deInt16)i); 2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolIntArray_getNumElements(arr) == 5000); 2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolInt16Array_getNumElements(arr16) == 5000); 2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 0; i < 5000; i++) 2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolIntArray_get(arr, i) == i); 2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolInt16Array_get(arr16, i) == i); 2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry /* Test set() and pushBack() with reserve(). */ 2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry arr = dePoolIntArray_create(pool); 2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolIntArray_setSize(arr, 1500); 2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolIntArray_reserve(arr, 2000); 2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 0; i < 1500; i++) 2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolIntArray_set(arr, i, i); 2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (; i < 5000; i++) 2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry dePoolIntArray_pushBack(arr, i); 2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(dePoolIntArray_getNumElements(arr) == 5000); 2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (i = 0; i < 5000; i++) 2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int val = dePoolIntArray_get(arr, i); 2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_TEST_ASSERT(val == i); 2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deMemPool_destroy(pool); 2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 232