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) {
|
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_variable_stack = GC_variable_stack;
|
||||||
gc->saved_GC_gen0_alloc_page_ptr = GC_gen0_alloc_page_ptr;
|
gc->saved_GC_gen0_alloc_page_ptr = GC_gen0_alloc_page_ptr;
|
||||||
gc->saved_GC_gen0_alloc_page_end = GC_gen0_alloc_page_end;
|
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) {
|
static inline void restore_globals_from_gc(NewGC *gc) {
|
||||||
mark_stack = gc->saved_mark_stack;
|
|
||||||
GC_variable_stack = gc->saved_GC_variable_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_ptr = gc->saved_GC_gen0_alloc_page_ptr;
|
||||||
GC_gen0_alloc_page_end = gc->saved_GC_gen0_alloc_page_end;
|
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_engine_instance_init();
|
||||||
Scheme_Env *scheme_place_instance_init();
|
Scheme_Env *scheme_place_instance_init();
|
||||||
static void place_instance_init_pre_kernel();
|
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
|
#ifdef MZ_PRECISE_GC
|
||||||
static void register_traversers(void);
|
static void register_traversers(void);
|
||||||
|
@ -361,7 +361,7 @@ Scheme_Env *scheme_engine_instance_init() {
|
||||||
place_instance_init_pre_kernel(stack_base);
|
place_instance_init_pre_kernel(stack_base);
|
||||||
make_kernel_env();
|
make_kernel_env();
|
||||||
scheme_init_parameterization_readonly_globals();
|
scheme_init_parameterization_readonly_globals();
|
||||||
env = place_instance_init_post_kernel();
|
env = place_instance_init_post_kernel(1);
|
||||||
|
|
||||||
return env;
|
return env;
|
||||||
}
|
}
|
||||||
|
@ -428,7 +428,7 @@ Scheme_Env *scheme_get_unsafe_env() {
|
||||||
return 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;
|
Scheme_Env *env;
|
||||||
/* error handling and buffers */
|
/* error handling and buffers */
|
||||||
/* this check prevents initializing orig ports twice for the first initial
|
/* 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_logger();
|
||||||
scheme_init_eval_places();
|
scheme_init_eval_places();
|
||||||
scheme_init_regexp_places();
|
scheme_init_regexp_places();
|
||||||
scheme_init_stx_places();
|
scheme_init_stx_places(initial_main_os_thread);
|
||||||
scheme_init_sema_places();
|
scheme_init_sema_places();
|
||||||
scheme_init_gmp_places();
|
scheme_init_gmp_places();
|
||||||
scheme_alloc_global_fdset();
|
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) {
|
Scheme_Env *scheme_place_instance_init(void *stack_base) {
|
||||||
place_instance_init_pre_kernel(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() {
|
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_eval_places(void);
|
||||||
void scheme_init_port_places(void);
|
void scheme_init_port_places(void);
|
||||||
void scheme_init_regexp_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_fun_places(void);
|
||||||
void scheme_init_sema_places(void);
|
void scheme_init_sema_places(void);
|
||||||
void scheme_init_gmp_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);
|
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(last_phase_shift);
|
||||||
REGISTER_SO(nominal_ipair_cache);
|
REGISTER_SO(nominal_ipair_cache);
|
||||||
REGISTER_SO(quick_hash_table);
|
REGISTER_SO(quick_hash_table);
|
||||||
|
@ -639,6 +639,14 @@ void scheme_init_stx_places() {
|
||||||
REGISTER_SO(than_id_marks_ht);
|
REGISTER_SO(than_id_marks_ht);
|
||||||
REGISTER_SO(interned_skip_ribs);
|
REGISTER_SO(interned_skip_ribs);
|
||||||
REGISTER_SO(unsealed_dependencies);
|
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();
|
interned_skip_ribs = scheme_make_weak_equal_table();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user