Skip to content

Commit a3b93eb

Browse files
committed
Fix excessive allocation for page ages.
1 parent 404cd0f commit a3b93eb

File tree

2 files changed

+3
-8
lines changed

2 files changed

+3
-8
lines changed

src/gc.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ static inline gcval_t *reset_page(jl_gc_pool_t *p, jl_gc_pagemeta_t *pg, gcval_t
643643
pg->nfree = (GC_PAGE_SZ - GC_PAGE_OFFSET) / p->osize;
644644
jl_tls_states_t *ptls = jl_all_task_states[pg->thread_n].ptls;
645645
pg->pool_n = p - ptls->heap.norm_pools;
646-
memset(page_age(pg), 0, LLT_ALIGN(GC_PAGE_SZ / p->osize, 8));
646+
memset(pg->ages, 0, GC_PAGE_SZ / 8 / p->osize + 1);
647647
gcval_t *beg = (gcval_t*)(pg->data + GC_PAGE_OFFSET);
648648
gcval_t *end = (gcval_t*)((char*)beg + (pg->nfree - 1)*p->osize);
649649
end->next = fl;
@@ -661,7 +661,7 @@ static NOINLINE void add_page(jl_gc_pool_t *p)
661661
jl_gc_pagemeta_t *pg = page_metadata(data + GC_PAGE_OFFSET);
662662
pg->data = data;
663663
pg->osize = p->osize;
664-
pg->ages = (uint8_t*)malloc(LLT_ALIGN(GC_PAGE_SZ / p->osize, 8));
664+
pg->ages = (uint8_t*)malloc(GC_PAGE_SZ / 8 / p->osize + 1);
665665
pg->thread_n = ti_tid;
666666
gcval_t *fl = reset_page(p, pg, p->newpages);
667667
p->newpages = fl;
@@ -839,7 +839,7 @@ static gcval_t **sweep_page(jl_gc_pool_t *p, jl_gc_pagemeta_t *pg, gcval_t **pfl
839839
int pg_freedall = 0, pg_total = 0, pg_skpd = 0;
840840
int obj_per_page = (GC_PAGE_SZ - GC_PAGE_OFFSET)/osize;
841841
char *data = pg->data;
842-
uint8_t *ages = page_age(pg);
842+
uint8_t *ages = pg->ages;
843843
v = (gcval_t*)(data + GC_PAGE_OFFSET);
844844
char *lim = (char*)v + GC_PAGE_SZ - GC_PAGE_OFFSET - osize;
845845
freedall = 1;

src/gc.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,6 @@ STATIC_INLINE int page_index(region_t *region, void *data)
221221
return (gc_page_data(data) - region->pages->data) / GC_PAGE_SZ;
222222
}
223223

224-
STATIC_INLINE uint8_t *page_age(jl_gc_pagemeta_t *pg)
225-
{
226-
return pg->ages;
227-
}
228-
229224
#define gc_bits(o) (((gcval_t*)(o))->gc_bits)
230225
#define gc_marked(o) (((gcval_t*)(o))->gc_bits & GC_MARKED)
231226
#define _gc_setmark(o, mark_mode) (((gcval_t*)(o))->gc_bits = mark_mode)

0 commit comments

Comments
 (0)