@@ -284,7 +284,6 @@ typedef struct {
284284static jl_datatype_t * datatype_stack_internal ;
285285static jl_datatype_t * datatype_stack_external ;
286286static jl_datatype_t * datatype_stack ;
287- static jl_ptls_t ptls ;
288287
289288static size_t gc_alloc_size (jl_value_t * val )
290289{
@@ -333,7 +332,7 @@ int internal_obj_scan(jl_value_t *val)
333332 }
334333}
335334
336- dynstack_t * allocate_stack_mem (size_t capacity )
335+ dynstack_t * allocate_stack_mem (jl_ptls_t ptls , size_t capacity )
337336{
338337 size_t size = offsetof(dynstack_t , data ) + capacity * sizeof (jl_value_t * );
339338 jl_datatype_t * type = datatype_stack_internal ;
@@ -377,13 +376,14 @@ jl_value_t *stk_type()
377376
378377// Create a new stack object
379378
380- jl_value_t * stk_make ()
379+ jl_value_t * stk_make (void )
381380{
381+ jl_ptls_t ptls = jl_get_ptls_states ();
382382 jl_value_t * hdr =
383383 jl_gc_alloc_typed (ptls , sizeof (jl_value_t * ), datatype_stack );
384384 JL_GC_PUSH1 (hdr );
385385 * (dynstack_t * * )hdr = NULL ;
386- dynstack_t * stk = allocate_stack_mem (8 );
386+ dynstack_t * stk = allocate_stack_mem (ptls , 8 );
387387 * (dynstack_t * * )hdr = stk ;
388388 jl_gc_schedule_foreign_sweepfunc (ptls , (jl_value_t * )(stk ));
389389 JL_GC_POP ();
@@ -408,7 +408,8 @@ void stk_push(jl_value_t *s, jl_value_t *v)
408408 jl_gc_wb ((jl_value_t * )stk , v );
409409 }
410410 else {
411- dynstack_t * newstk = allocate_stack_mem (stk -> capacity * 3 / 2 + 1 );
411+ jl_ptls_t ptls = jl_get_ptls_states ();
412+ dynstack_t * newstk = allocate_stack_mem (ptls , stk -> capacity * 3 / 2 + 1 );
412413 newstk -> size = stk -> size ;
413414 memcpy (newstk -> data , stk -> data , sizeof (jl_value_t * ) * stk -> size );
414415 * (dynstack_t * * )s = newstk ;
@@ -453,6 +454,7 @@ static jl_module_t *module;
453454
454455void root_scanner (int full )
455456{
457+ jl_ptls_t ptls = jl_get_ptls_states ();
456458 for (int i = 0 ; i < NAUXROOTS ; i ++ ) {
457459 if (aux_roots [i ])
458460 jl_gc_mark_queue_obj (ptls , aux_roots [i ]);
@@ -477,7 +479,7 @@ static int stack_grows_down(void) {
477479 return is_lower_stack_frame_ptr (buf );
478480}
479481
480- void task_scanner (jl_task_t * task , int root_task )
482+ void task_scanner (jl_task_t * task , int root_task , jl_ptls_t ptls )
481483{
482484 int var_on_frame ;
483485
@@ -603,7 +605,6 @@ int main()
603605 jl_init ();
604606 if (jl_gc_enable_conservative_gc_support () < 0 )
605607 abort ();
606- ptls = jl_get_ptls_states ();
607608 jl_gc_set_cb_root_scanner (root_scanner , 1 );
608609 jl_gc_set_cb_task_scanner (task_scanner , 1 );
609610 jl_gc_set_cb_pre_gc (pre_gc_func , 1 );
0 commit comments