X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fthread.c;h=26f6de6790536f16f768921e10a43808479dce6f;hb=11dc847696f9c5441c409ce5b7fdf77cf27746c5;hp=4d20d0ffcc9c1564b15e6a43608e6214129a7089;hpb=daa6f0ce672d8dc60176ff885da18e44ee0355c6;p=sbcl.git diff --git a/src/runtime/thread.c b/src/runtime/thread.c index 4d20d0f..26f6de6 100644 --- a/src/runtime/thread.c +++ b/src/runtime/thread.c @@ -401,6 +401,9 @@ undo_init_new_thread(struct thread *th, init_thread_data *scribble) #ifdef LISP_FEATURE_SB_SAFEPOINT block_blockable_signals(0, 0); gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->alloc_region); +#if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) + gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->sprof_alloc_region); +#endif pop_gcing_safety(&scribble->safety); lock_ret = pthread_mutex_lock(&all_threads_lock); gc_assert(lock_ret == 0); @@ -418,6 +421,9 @@ undo_init_new_thread(struct thread *th, init_thread_data *scribble) gc_assert(lock_ret == 0); gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->alloc_region); +#if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) + gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->sprof_alloc_region); +#endif unlink_thread(th); pthread_mutex_unlock(&all_threads_lock); gc_assert(lock_ret == 0); @@ -529,7 +535,7 @@ attach_os_thread(init_thread_data *scribble) * tempting to just perform such unsafe allocation though. So let's * at least try to suppress GC before consing, and hope that it * works: */ - SetSymbolValue(GC_INHIBIT, T, th); + bind_variable(GC_INHIBIT, T, th); uword_t stacksize = (uword_t) th->control_stack_end - (uword_t) th->control_stack_start; @@ -700,6 +706,9 @@ create_thread_struct(lispobj initial_function) { #endif #ifdef LISP_FEATURE_GENCGC gc_set_region_empty(&th->alloc_region); +# if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) + gc_set_region_empty(&th->sprof_alloc_region); +# endif #endif #ifdef LISP_FEATURE_SB_THREAD /* This parallels the same logic in globals.c for the