Fixes for new THREAD_LOCAL table
svn: r17017
This commit is contained in:
parent
2599cf95f8
commit
66869a13d5
|
@ -1865,7 +1865,6 @@ void GC_construct_child_gc() {
|
|||
}
|
||||
|
||||
static inline void save_globals_to_gc(NewGC *gc) {
|
||||
gc->saved_mark_stack = mark_stack;
|
||||
gc->saved_GC_variable_stack = GC_variable_stack;
|
||||
gc->saved_GC_gen0_alloc_page_ptr = GC_gen0_alloc_page_ptr;
|
||||
gc->saved_GC_gen0_alloc_page_end = GC_gen0_alloc_page_end;
|
||||
|
@ -1873,7 +1872,6 @@ static inline void save_globals_to_gc(NewGC *gc) {
|
|||
}
|
||||
|
||||
static inline void restore_globals_from_gc(NewGC *gc) {
|
||||
mark_stack = gc->saved_mark_stack;
|
||||
GC_variable_stack = gc->saved_GC_variable_stack;
|
||||
GC_gen0_alloc_page_ptr = gc->saved_GC_gen0_alloc_page_ptr;
|
||||
GC_gen0_alloc_page_end = gc->saved_GC_gen0_alloc_page_end;
|
||||
|
|
|
@ -144,7 +144,7 @@ int scheme_is_module_begin_env(Scheme_Comp_Env *env);
|
|||
Scheme_Env *scheme_engine_instance_init();
|
||||
Scheme_Env *scheme_place_instance_init();
|
||||
static void place_instance_init_pre_kernel();
|
||||
static Scheme_Env *place_instance_init_post_kernel();
|
||||
static Scheme_Env *place_instance_init_post_kernel(int initial_main_os_thread);
|
||||
|
||||
#ifdef MZ_PRECISE_GC
|
||||
static void register_traversers(void);
|
||||
|
@ -361,7 +361,7 @@ Scheme_Env *scheme_engine_instance_init() {
|
|||
place_instance_init_pre_kernel(stack_base);
|
||||
make_kernel_env();
|
||||
scheme_init_parameterization_readonly_globals();
|
||||
env = place_instance_init_post_kernel();
|
||||
env = place_instance_init_post_kernel(1);
|
||||
|
||||
return env;
|
||||
}
|
||||
|
@ -428,7 +428,7 @@ Scheme_Env *scheme_get_unsafe_env() {
|
|||
return unsafe_env;
|
||||
}
|
||||
|
||||
static Scheme_Env *place_instance_init_post_kernel() {
|
||||
static Scheme_Env *place_instance_init_post_kernel(int initial_main_os_thread) {
|
||||
Scheme_Env *env;
|
||||
/* error handling and buffers */
|
||||
/* this check prevents initializing orig ports twice for the first initial
|
||||
|
@ -442,7 +442,7 @@ static Scheme_Env *place_instance_init_post_kernel() {
|
|||
scheme_init_logger();
|
||||
scheme_init_eval_places();
|
||||
scheme_init_regexp_places();
|
||||
scheme_init_stx_places();
|
||||
scheme_init_stx_places(initial_main_os_thread);
|
||||
scheme_init_sema_places();
|
||||
scheme_init_gmp_places();
|
||||
scheme_alloc_global_fdset();
|
||||
|
@ -497,7 +497,7 @@ static Scheme_Env *place_instance_init_post_kernel() {
|
|||
|
||||
Scheme_Env *scheme_place_instance_init(void *stack_base) {
|
||||
place_instance_init_pre_kernel(stack_base);
|
||||
return place_instance_init_post_kernel();
|
||||
return place_instance_init_post_kernel(0);
|
||||
}
|
||||
|
||||
void scheme_place_instance_destroy() {
|
||||
|
|
|
@ -230,7 +230,7 @@ void scheme_init_print_buffers_places(void);
|
|||
void scheme_init_eval_places(void);
|
||||
void scheme_init_port_places(void);
|
||||
void scheme_init_regexp_places(void);
|
||||
void scheme_init_stx_places(void);
|
||||
void scheme_init_stx_places(int initial_main_os_thread);
|
||||
void scheme_init_fun_places(void);
|
||||
void scheme_init_sema_places(void);
|
||||
void scheme_init_gmp_places(void);
|
||||
|
|
|
@ -631,7 +631,7 @@ void scheme_init_stx(Scheme_Env *env)
|
|||
scheme_install_type_reader2(scheme_free_id_info_type, read_free_id_info_prefix);
|
||||
}
|
||||
|
||||
void scheme_init_stx_places() {
|
||||
void scheme_init_stx_places(int initial_main_os_thread) {
|
||||
REGISTER_SO(last_phase_shift);
|
||||
REGISTER_SO(nominal_ipair_cache);
|
||||
REGISTER_SO(quick_hash_table);
|
||||
|
@ -639,6 +639,14 @@ void scheme_init_stx_places() {
|
|||
REGISTER_SO(than_id_marks_ht);
|
||||
REGISTER_SO(interned_skip_ribs);
|
||||
REGISTER_SO(unsealed_dependencies);
|
||||
|
||||
if (!initial_main_os_thread) {
|
||||
REGISTER_SO(mark_id);
|
||||
REGISTER_SO(current_rib_timestamp);
|
||||
mark_id = scheme_make_integer(0);
|
||||
current_rib_timestamp = scheme_make_integer(0);
|
||||
}
|
||||
|
||||
interned_skip_ribs = scheme_make_weak_equal_table();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user