Fixes for new THREAD_LOCAL table

svn: r17017
This commit is contained in:
Kevin Tew 2009-11-23 22:13:47 +00:00
parent 2599cf95f8
commit 66869a13d5
4 changed files with 15 additions and 9 deletions

View File

@ -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;

View File

@ -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() {

View File

@ -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);

View File

@ -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();
}