@@ -1,11 +1,12 @@
11/*
2-** pool.c - memory pool
2+** mempool.c - memory pool
33**
44** See Copyright Notice in mruby.h
55*/
6677#include <string.h>
88#include <mruby.h>
9+#include <mruby/mempool.h>
9101011/* configuration section */
1112/* allocated memory address should be multiple of POOL_ALIGNMENT */
@@ -30,8 +31,8 @@
3031#pragma warning(disable : 4200)
3132#endif
323333-struct mrb_pool_page {
34-struct mrb_pool_page *next;
34+struct mrb_mempool_page {
35+struct mrb_mempool_page *next;
3536size_t offset;
3637size_t len;
3738void *last;
@@ -42,9 +43,9 @@ struct mrb_pool_page {
4243#pragma warning(pop)
4344#endif
444545-struct mrb_pool {
46+struct mrb_mempool {
4647mrb_state *mrb;
47-struct mrb_pool_page *pages;
48+struct mrb_mempool_page *pages;
4849};
49505051#undef TEST_POOL
@@ -60,10 +61,10 @@ struct mrb_pool {
6061# define ALIGN_PADDING(x) (0)
6162#endif
626363-MRB_API mrb_pool*
64-mrb_pool_open(mrb_state *mrb)
64+MRB_API mrb_mempool*
65+mrb_mempool_open(mrb_state *mrb)
6566{
66-mrb_pool *pool = (mrb_pool*)mrb_malloc_simple(mrb, sizeof(mrb_pool));
67+mrb_mempool *pool = (mrb_mempool*)mrb_malloc_simple(mrb, sizeof(mrb_mempool));
67686869if (pool) {
6970pool->mrb = mrb;
@@ -73,28 +74,28 @@ mrb_pool_open(mrb_state *mrb)
7374}
74757576MRB_API void
76-mrb_pool_close(mrb_pool *pool)
77+mrb_mempool_close(mrb_mempool *pool)
7778{
78-struct mrb_pool_page *page;
79+struct mrb_mempool_page *page;
79808081if (!pool) return;
8182page = pool->pages;
8283while (page) {
83-struct mrb_pool_page *tmp = page;
84+struct mrb_mempool_page *tmp = page;
8485page = page->next;
8586mrb_free(pool->mrb, tmp);
8687 }
8788mrb_free(pool->mrb, pool);
8889}
899090-static struct mrb_pool_page*
91-page_alloc(mrb_pool *pool, size_t len)
91+static struct mrb_mempool_page*
92+page_alloc(mrb_mempool *pool, size_t len)
9293{
93-struct mrb_pool_page *page;
94+struct mrb_mempool_page *page;
94959596if (len < POOL_PAGE_SIZE)
9697len = POOL_PAGE_SIZE;
97-page = (struct mrb_pool_page*)mrb_malloc_simple(pool->mrb, sizeof(struct mrb_pool_page)+len);
98+page = (struct mrb_mempool_page*)mrb_malloc_simple(pool->mrb, sizeof(struct mrb_mempool_page)+len);
9899if (page) {
99100page->offset = 0;
100101page->len = len;
@@ -104,9 +105,9 @@ page_alloc(mrb_pool *pool, size_t len)
104105}
105106106107MRB_API void*
107-mrb_pool_alloc(mrb_pool *pool, size_t len)
108+mrb_mempool_alloc(mrb_mempool *pool, size_t len)
108109{
109-struct mrb_pool_page *page;
110+struct mrb_mempool_page *page;
110111111112if (!pool) return NULL;
112113len += ALIGN_PADDING(len);
@@ -129,13 +130,13 @@ mrb_pool_alloc(mrb_pool *pool, size_t len)
129130}
130131131132MRB_API void*
132-mrb_pool_realloc(mrb_pool *pool, void *p, size_t oldlen, size_t newlen)
133+mrb_mempool_realloc(mrb_mempool *pool, void *p, size_t oldlen, size_t newlen)
133134{
134135if (!pool) return NULL;
135136if (newlen < oldlen) return p;
136137oldlen += ALIGN_PADDING(oldlen);
137138newlen += ALIGN_PADDING(newlen);
138-for (struct mrb_pool_page *page = pool->pages; page; page = page->next) {
139+for (struct mrb_mempool_page *page = pool->pages; page; page = page->next) {
139140if (page->last == p) {
140141/* if p is a last allocation from the page */
141142size_t beg = (char*)p - page->page;
@@ -152,7 +153,7 @@ mrb_pool_realloc(mrb_pool *pool, void *p, size_t oldlen, size_t newlen)
152153return p;
153154 }
154155 }
155-void *np = mrb_pool_alloc(pool, newlen);
156+void *np = mrb_mempool_alloc(pool, newlen);
156157if (np == NULL) {
157158return NULL;
158159 }
@@ -165,17 +166,17 @@ int
165166main(void)
166167{
167168int i, len = 250;
168-mrb_pool *pool;
169+mrb_mempool *pool;
169170void *p;
170171171-pool = mrb_pool_open(NULL);
172-p = mrb_pool_alloc(pool, len);
172+pool = mrb_mempool_open(NULL);
173+p = mrb_mempool_alloc(pool, len);
173174for (i=1; i<20; i++) {
174175printf("%p (len=%d)\n", p, len);
175-p = mrb_pool_realloc(pool, p, len, len*2);
176+p = mrb_mempool_realloc(pool, p, len, len*2);
176177len *= 2;
177178 }
178-mrb_pool_close(pool);
179+mrb_mempool_close(pool);
179180return 0;
180181}
181182#endif