diff --git a/port/linux/api-make-linux.sh b/port/linux/api-make-linux.sh old mode 100644 new mode 100755 diff --git a/port/linux/api-make-win10.sh b/port/linux/api-make-win10.sh old mode 100644 new mode 100755 diff --git a/port/linux/api-make.sh b/port/linux/api-make.sh old mode 100644 new mode 100755 diff --git a/port/linux/gtest.sh b/port/linux/gtest.sh old mode 100644 new mode 100755 diff --git a/port/linux/init.sh b/port/linux/init.sh old mode 100644 new mode 100755 diff --git a/port/linux/make.sh b/port/linux/make.sh old mode 100644 new mode 100755 diff --git a/port/linux/package/pikascript/rust-msc-latest-linux b/port/linux/package/pikascript/rust-msc-latest-linux old mode 100644 new mode 100755 diff --git a/port/linux/pull-core.sh b/port/linux/pull-core.sh old mode 100644 new mode 100755 diff --git a/port/linux/push-core.sh b/port/linux/push-core.sh old mode 100644 new mode 100755 diff --git a/port/linux/test-banchmark.sh b/port/linux/test-banchmark.sh old mode 100644 new mode 100755 diff --git a/port/linux/test/mem_pool_config.c b/port/linux/test/mem_pool_config.c index 7131c9fd1..5c5bf125b 100644 --- a/port/linux/test/mem_pool_config.c +++ b/port/linux/test/mem_pool_config.c @@ -1,5 +1,6 @@ #include "dataMemory.h" +#define use_mem_pool 1 #define pika_aline 8 #define pika_pool_size 8192 uint8_t pika_bitmap[pika_pool_size / pika_aline / 8] = {0}; @@ -8,7 +9,6 @@ Pool pikaPool = {.aline = pika_aline, .bitmap = pika_bitmap, .mem = pika_pool_mem, .size = pika_pool_size}; -#define use_mem_pool 1 #if use_mem_pool void* __impl_pikaMalloc(size_t size) { void* mem = pool_malloc(&pikaPool, size); diff --git a/port/linux/update-compiler.sh b/port/linux/update-compiler.sh old mode 100644 new mode 100755 diff --git a/src/dataMemory.c b/src/dataMemory.c index c78847db5..691239e7e 100644 --- a/src/dataMemory.c +++ b/src/dataMemory.c @@ -205,7 +205,17 @@ void pool_free(Pool* pool, void* mem, uint32_t size) { /* save last free block index to add speed */ uint32_t block_end = block_index + block_num - 1; if (block_end == pool->purl_free_block_start - 1) { - pool->purl_free_block_start = block_index; + uint32_t first_pure_free_block = block_index; + /* back to first used block */ + if (0 != first_pure_free_block) { + while (0 == bitmap_get(pool->bitmap, first_pure_free_block - 1)) { + first_pure_free_block--; + if (0 == first_pure_free_block) { + break; + } + } + } + pool->purl_free_block_start = first_pure_free_block; } return; }