Use C Macro to communicate real meaning of page->previous_size

This commit is contained in:
Kevin Tew 2010-04-26 09:47:48 -06:00
parent d8dd03c728
commit 7eba20b236

View File

@ -692,7 +692,7 @@ static void *allocate_big(const size_t request_size_bytes, int type)
return objptr;
}
}
#define MED_NEXT_SEARCH_SLOT(page) ((page)->previous_size)
inline static mpage *create_new_medium_page(NewGC *gc, const int sz, const int pos) {
mpage *page;
int n;
@ -702,11 +702,11 @@ inline static mpage *create_new_medium_page(NewGC *gc, const int sz, const int p
page->size = sz;
page->size_class = 1;
page->page_type = PAGE_BIG;
page->previous_size = PREFIX_SIZE;
MED_NEXT_SEARCH_SLOT(page) = PREFIX_SIZE;
page->live_size = sz;
GCVERBOSEPAGE("NEW MED PAGE", page);
for (n = page->previous_size; ((n + sz) <= APAGE_SIZE); n += sz) {
for (n = MED_NEXT_SEARCH_SLOT(page); ((n + sz) <= APAGE_SIZE); n += sz) {
objhead *info = (objhead *)PTR(NUM(page->addr) + n);
info->dead = 1;
info->size = gcBYTES_TO_WORDS(sz);
@ -728,12 +728,12 @@ inline static void *medium_page_realloc_dead_slot(NewGC *gc, const int sz, const
mpage *page;
for (page = gc->med_freelist_pages[pos]; page; page = gc->med_freelist_pages[pos] = page->prev) {
for (n = page->previous_size; ((n + sz) <= APAGE_SIZE); n += sz) {
for (n = MED_NEXT_SEARCH_SLOT(page); ((n + sz) <= APAGE_SIZE); n += sz) {
objhead * info = (objhead *)PTR(NUM(page->addr) + n);
if (info->dead) {
void *p;
page->previous_size = (n + sz);
MED_NEXT_SEARCH_SLOT(page) = (n + sz);
page->live_size += sz;
info->dead = 0;
@ -798,7 +798,7 @@ static void *allocate_medium(const size_t request_size_bytes, const int type)
objhead *info;
page = create_new_medium_page(gc, sz, pos);
info = (objhead *)PTR(NUM(page->addr) + page->previous_size);
info = (objhead *)PTR(NUM(page->addr) + MED_NEXT_SEARCH_SLOT(page));
info->dead = 0;
info->type = type;
@ -817,6 +817,7 @@ static void *allocate_medium(const size_t request_size_bytes, const int type)
}
}
#define GEN0_ALLOC_SIZE(page) ((page)->previous_size)
inline static mpage *gen0_create_new_nursery_mpage(NewGC *gc, const size_t page_size) {
mpage *newmpage;
@ -824,7 +825,7 @@ inline static mpage *gen0_create_new_nursery_mpage(NewGC *gc, const size_t page_
newmpage->addr = malloc_dirty_pages(gc, page_size, APAGE_SIZE);
newmpage->size_class = 0;
newmpage->size = PREFIX_SIZE;
newmpage->previous_size = page_size;
GEN0_ALLOC_SIZE(newmpage) = page_size;
pagemap_add_with_size(gc->page_maps, newmpage, page_size);
GCVERBOSEPAGE("NEW gen0", newmpage);
@ -877,7 +878,7 @@ unsigned long GC_make_jit_nursery_page(int count) {
}
inline static void gen0_free_jit_nursery_page(NewGC *gc, mpage *page) {
gen0_free_nursery_mpage(gc, page, page->previous_size);
gen0_free_nursery_mpage(gc, page, GEN0_ALLOC_SIZE(page));
}
inline static mpage *gen0_create_new_mpage(NewGC *gc) {