summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gc/default/default.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/gc/default/default.c b/gc/default/default.c
index 8507219155..186506c430 100644
--- a/gc/default/default.c
+++ b/gc/default/default.c
@@ -841,13 +841,7 @@ heap_page_in_global_empty_pages_pool(rb_objspace_t *objspace, struct heap_page *
#define GET_PAGE_HEADER(x) (&GET_PAGE_BODY(x)->header)
#define GET_HEAP_PAGE(x) (GET_PAGE_HEADER(x)->page)
-static const uint32_t slot_div_magics[HEAP_COUNT] = {
- 0x06666667U,
- 0x03333334U,
- 0x0199999aU,
- 0x00cccccdU,
- 0x00666667U,
-};
+static uint32_t slot_div_magics[HEAP_COUNT];
static inline size_t
slot_index_for_offset(size_t offset, uint32_t div_magic)
@@ -9517,6 +9511,7 @@ rb_gc_impl_objspace_init(void *objspace_ptr)
rb_heap_t *heap = &heaps[i];
heap->slot_size = (1 << i) * BASE_SLOT_SIZE;
+ slot_div_magics[i] = (uint32_t)(((uint64_t)1 << 32) / heap->slot_size + 1);
ccan_list_head_init(&heap->pages);
}