@@ -97,7 +97,7 @@ static arraylist_t bits_save[4];
9797static void gc_clear_mark_page (jl_gc_pagemeta_t * pg , int bits )
9898{
9999 jl_ptls_t ptls2 = gc_all_tls_states [pg -> thread_n ];
100- jl_gc_pool_t * pool = & ptls2 -> heap .norm_pools [pg -> pool_n ];
100+ jl_gc_pool_t * pool = & ptls2 -> gc_tls . heap .norm_pools [pg -> pool_n ];
101101 jl_taggedvalue_t * pv = (jl_taggedvalue_t * )(pg -> data + GC_PAGE_OFFSET );
102102 char * lim = (char * )pv + GC_PAGE_SZ - GC_PAGE_OFFSET - pool -> osize ;
103103 while ((char * )pv <= lim ) {
@@ -112,7 +112,7 @@ static void gc_clear_mark_outer(int bits)
112112{
113113 for (int i = 0 ; i < gc_n_threads ; i ++ ) {
114114 jl_ptls_t ptls2 = gc_all_tls_states [i ];
115- jl_gc_pagemeta_t * pg = jl_atomic_load_relaxed (& ptls2 -> page_metadata_allocd .bottom );
115+ jl_gc_pagemeta_t * pg = jl_atomic_load_relaxed (& ptls2 -> gc_tls . page_metadata_allocd .bottom );
116116 while (pg != NULL ) {
117117 gc_clear_mark_page (pg , bits );
118118 pg = pg -> next ;
@@ -132,7 +132,7 @@ static void clear_mark(int bits)
132132 }
133133 bigval_t * v ;
134134 for (int i = 0 ; i < gc_n_threads ; i ++ ) {
135- v = gc_all_tls_states [i ]-> heap .big_objects ;
135+ v = gc_all_tls_states [i ]-> gc_tls . heap .big_objects ;
136136 while (v != NULL ) {
137137 void * gcv = & v -> header ;
138138 if (!gc_verifying )
@@ -170,7 +170,7 @@ static void gc_verify_track(jl_ptls_t ptls)
170170 return ;
171171 do {
172172 jl_gc_markqueue_t mq ;
173- jl_gc_markqueue_t * mq2 = & ptls -> mark_queue ;
173+ jl_gc_markqueue_t * mq2 = & ptls -> gc_tls . mark_queue ;
174174 ws_queue_t * cq = & mq .chunk_queue ;
175175 ws_queue_t * q = & mq .ptr_queue ;
176176 jl_atomic_store_relaxed (& cq -> top , 0 );
@@ -230,7 +230,7 @@ void gc_verify(jl_ptls_t ptls)
230230 return ;
231231 }
232232 jl_gc_markqueue_t mq ;
233- jl_gc_markqueue_t * mq2 = & ptls -> mark_queue ;
233+ jl_gc_markqueue_t * mq2 = & ptls -> gc_tls . mark_queue ;
234234 ws_queue_t * cq = & mq .chunk_queue ;
235235 ws_queue_t * q = & mq .ptr_queue ;
236236 jl_atomic_store_relaxed (& cq -> top , 0 );
@@ -289,7 +289,7 @@ static void gc_verify_tags_page(jl_gc_pagemeta_t *pg)
289289 int p_n = pg -> pool_n ;
290290 int t_n = pg -> thread_n ;
291291 jl_ptls_t ptls2 = gc_all_tls_states [t_n ];
292- jl_gc_pool_t * p = & ptls2 -> heap .norm_pools [p_n ];
292+ jl_gc_pool_t * p = & ptls2 -> gc_tls . heap .norm_pools [p_n ];
293293 int osize = pg -> osize ;
294294 char * data = pg -> data ;
295295 char * page_begin = data + GC_PAGE_OFFSET ;
@@ -349,42 +349,13 @@ static void gc_verify_tags_page(jl_gc_pagemeta_t *pg)
349349
350350static void gc_verify_tags_pagetable0 (pagetable0_t * pagetable0 )
351351{
352- for (int pg_i = 0 ; pg_i < REGION0_PG_COUNT / 32 ; pg_i ++ ) {
353- uint32_t line = pagetable0 -> allocmap [pg_i ];
354- if (line ) {
355- for (int j = 0 ; j < 32 ; j ++ ) {
356- if ((line >> j ) & 1 ) {
357- gc_verify_tags_page (pagetable0 -> meta [pg_i * 32 + j ]);
358- }
359- }
360- }
361- }
362- }
363-
364- static void gc_verify_tags_pagetable1 (pagetable1_t * pagetable1 )
365- {
366- for (int pg_i = 0 ; pg_i < REGION1_PG_COUNT / 32 ; pg_i ++ ) {
367- uint32_t line = pagetable1 -> allocmap0 [pg_i ];
368- if (line ) {
369- for (int j = 0 ; j < 32 ; j ++ ) {
370- if ((line >> j ) & 1 ) {
371- gc_verify_tags_pagetable0 (pagetable1 -> meta0 [pg_i * 32 + j ]);
372- }
373- }
374- }
375- }
376- }
377-
378- static void gc_verify_tags_pagetable (void )
379- {
380- for (int pg_i = 0 ; pg_i < (REGION2_PG_COUNT + 31 ) / 32 ; pg_i ++ ) {
381- uint32_t line = memory_map .allocmap1 [pg_i ];
382- if (line ) {
383- for (int j = 0 ; j < 32 ; j ++ ) {
384- if ((line >> j ) & 1 ) {
385- gc_verify_tags_pagetable1 (memory_map .meta1 [pg_i * 32 + j ]);
386- }
387- }
352+ for (int i = 0 ; i < gc_n_threads ; i ++ ) {
353+ jl_ptls_t ptls2 = gc_all_tls_states [i ];
354+ jl_gc_page_stack_t * pgstk = & ptls2 -> gc_tls .page_metadata_allocd ;
355+ jl_gc_pagemeta_t * pg = jl_atomic_load_relaxed (& pgstk -> bottom );
356+ while (pg != NULL ) {
357+ gc_verify_tags_page (pg );
358+ pg = pg -> next ;
388359 }
389360 }
390361}
@@ -396,7 +367,7 @@ void gc_verify_tags(void)
396367 jl_ptls_t ptls2 = gc_all_tls_states [t_i ];
397368 for (int i = 0 ; i < JL_GC_N_POOLS ; i ++ ) {
398369 // for all pools, iterate its freelist
399- jl_gc_pool_t * p = & ptls2 -> heap .norm_pools [i ];
370+ jl_gc_pool_t * p = & ptls2 -> gc_tls . heap .norm_pools [i ];
400371 jl_taggedvalue_t * next = p -> freelist ;
401372 jl_taggedvalue_t * last = NULL ;
402373 char * allocating = gc_page_data (next );
@@ -837,8 +808,8 @@ void gc_time_mark_pause(int64_t t0, int64_t scanned_bytes,
837808 int64_t remset_nptr = 0 ;
838809 for (int t_i = 0 ; t_i < gc_n_threads ; t_i ++ ) {
839810 jl_ptls_t ptls2 = gc_all_tls_states [t_i ];
840- last_remset_len += ptls2 -> heap .last_remset -> len ;
841- remset_nptr = ptls2 -> heap .remset_nptr ;
811+ last_remset_len += ptls2 -> gc_tls . heap .last_remset -> len ;
812+ remset_nptr = ptls2 -> gc_tls . heap .remset_nptr ;
842813 }
843814 jl_safe_printf ("GC mark pause %.2f ms | "
844815 "scanned %" PRId64 " kB = %" PRId64 " + %" PRId64 " | "
@@ -969,13 +940,13 @@ void gc_stats_all_pool(void)
969940 for (int i = 0 ; i < JL_GC_N_POOLS ; i ++ ) {
970941 for (int t_i = 0 ; t_i < gc_n_threads ; t_i ++ ) {
971942 jl_ptls_t ptls2 = gc_all_tls_states [t_i ];
972- size_t b = pool_stats (& ptls2 -> heap .norm_pools [i ], & w , & np , & nol );
943+ size_t b = pool_stats (& ptls2 -> gc_tls . heap .norm_pools [i ], & w , & np , & nol );
973944 nb += b ;
974- no += (b / ptls2 -> heap .norm_pools [i ].osize );
945+ no += (b / ptls2 -> gc_tls . heap .norm_pools [i ].osize );
975946 tw += w ;
976947 tp += np ;
977948 nold += nol ;
978- noldbytes += nol * ptls2 -> heap .norm_pools [i ].osize ;
949+ noldbytes += nol * ptls2 -> gc_tls . heap .norm_pools [i ].osize ;
979950 }
980951 }
981952 jl_safe_printf ("%lld objects (%lld%% old), %lld kB (%lld%% old) total allocated, "
@@ -994,7 +965,7 @@ void gc_stats_big_obj(void)
994965 size_t nused = 0 , nbytes = 0 , nused_old = 0 , nbytes_old = 0 ;
995966 for (int t_i = 0 ; t_i < gc_n_threads ; t_i ++ ) {
996967 jl_ptls_t ptls2 = gc_all_tls_states [t_i ];
997- bigval_t * v = ptls2 -> heap .big_objects ;
968+ bigval_t * v = ptls2 -> gc_tls . heap .big_objects ;
998969 while (v != NULL ) {
999970 if (gc_marked (v -> bits .gc )) {
1000971 nused ++ ;
@@ -1011,7 +982,7 @@ void gc_stats_big_obj(void)
1011982 v = v -> next ;
1012983 }
1013984
1014- mallocarray_t * ma = ptls2 -> heap .mallocarrays ;
985+ mallocarray_t * ma = ptls2 -> gc_tls . heap .mallocarrays ;
1015986 while (ma != NULL ) {
1016987 if (gc_marked (jl_astaggedvalue (ma -> a )-> bits .gc )) {
1017988 nused ++ ;
@@ -1057,7 +1028,7 @@ static void gc_count_pool_pagetable(void)
10571028{
10581029 for (int i = 0 ; i < gc_n_threads ; i ++ ) {
10591030 jl_ptls_t ptls2 = gc_all_tls_states [i ];
1060- jl_gc_pagemeta_t * pg = jl_atomic_load_relaxed (& ptls2 -> page_metadata_allocd .bottom );
1031+ jl_gc_pagemeta_t * pg = jl_atomic_load_relaxed (& ptls2 -> gc_tls . page_metadata_allocd .bottom );
10611032 while (pg != NULL ) {
10621033 if (gc_alloc_map_is_set (pg -> data )) {
10631034 gc_count_pool_page (pg );
0 commit comments