Move global foreign creations to before MASTER GC switchout

svn: r15049
This commit is contained in:
Kevin Tew 2009-06-02 16:24:19 +00:00
parent 293d64cd15
commit 27215bcbca
3 changed files with 14 additions and 5 deletions

View File

@ -2689,12 +2689,8 @@ void ctype_printer(Scheme_Object *ctype, int dis, Scheme_Print_Params *pp)
/*****************************************************************************/
/* Initialization */
void scheme_init_foreign(Scheme_Env *env)
void scheme_init_foreign_globals()
{
Scheme_Env *menv;
ctype_struct *t;
Scheme_Object *s;
menv = scheme_primitive_module(scheme_intern_symbol("#%foreign"), env);
ffi_lib_tag = scheme_make_type("<ffi-lib>");
ffi_obj_tag = scheme_make_type("<ffi-obj>");
ctype_tag = scheme_make_type("<ctype>");
@ -2706,6 +2702,7 @@ void scheme_init_foreign(Scheme_Env *env)
GC_register_traversers(ffi_callback_tag, ffi_callback_SIZE, ffi_callback_MARK, ffi_callback_FIXUP, 1, 0);
# endif /* MZ_PRECISE_GC */
scheme_set_type_printer(ctype_tag, ctype_printer);
MZ_REGISTER_STATIC(opened_libs);
opened_libs = scheme_make_hash_table(SCHEME_hash_string);
MZ_REGISTER_STATIC(default_sym);
@ -2734,6 +2731,14 @@ void scheme_init_foreign(Scheme_Env *env)
fail_ok_sym = scheme_intern_symbol("fail-ok");
MZ_REGISTER_STATIC(abs_sym);
abs_sym = scheme_intern_symbol("abs");
}
void scheme_init_foreign(Scheme_Env *env)
{
Scheme_Env *menv;
ctype_struct *t;
Scheme_Object *s;
menv = scheme_primitive_module(scheme_intern_symbol("#%foreign"), env);
scheme_add_global("ffi-lib?",
scheme_make_prim_w_arity(foreign_ffi_lib_p, "ffi-lib?", 1, 1), menv);
scheme_add_global("ffi-lib",

View File

@ -333,6 +333,9 @@ Scheme_Env *scheme_engine_instance_init() {
scheme_init_symbol_table();
scheme_init_module_path_table();
scheme_init_type();
#ifndef DONT_USE_FOREIGN
scheme_init_foreign_globals();
#endif
#if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES)
GC_switch_out_master_gc();

View File

@ -214,6 +214,7 @@ void scheme_init_parameterization(Scheme_Env *env);
void scheme_init_getenv(void);
#ifndef DONT_USE_FOREIGN
void scheme_init_foreign_globals();
void scheme_init_foreign(Scheme_Env *env);
#endif
void scheme_init_place(Scheme_Env *env);