Move global foreign creations to before MASTER GC switchout
svn: r15049
This commit is contained in:
parent
293d64cd15
commit
27215bcbca
|
@ -2689,12 +2689,8 @@ void ctype_printer(Scheme_Object *ctype, int dis, Scheme_Print_Params *pp)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Initialization */
|
/* 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_lib_tag = scheme_make_type("<ffi-lib>");
|
||||||
ffi_obj_tag = scheme_make_type("<ffi-obj>");
|
ffi_obj_tag = scheme_make_type("<ffi-obj>");
|
||||||
ctype_tag = scheme_make_type("<ctype>");
|
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);
|
GC_register_traversers(ffi_callback_tag, ffi_callback_SIZE, ffi_callback_MARK, ffi_callback_FIXUP, 1, 0);
|
||||||
# endif /* MZ_PRECISE_GC */
|
# endif /* MZ_PRECISE_GC */
|
||||||
scheme_set_type_printer(ctype_tag, ctype_printer);
|
scheme_set_type_printer(ctype_tag, ctype_printer);
|
||||||
|
|
||||||
MZ_REGISTER_STATIC(opened_libs);
|
MZ_REGISTER_STATIC(opened_libs);
|
||||||
opened_libs = scheme_make_hash_table(SCHEME_hash_string);
|
opened_libs = scheme_make_hash_table(SCHEME_hash_string);
|
||||||
MZ_REGISTER_STATIC(default_sym);
|
MZ_REGISTER_STATIC(default_sym);
|
||||||
|
@ -2734,6 +2731,14 @@ void scheme_init_foreign(Scheme_Env *env)
|
||||||
fail_ok_sym = scheme_intern_symbol("fail-ok");
|
fail_ok_sym = scheme_intern_symbol("fail-ok");
|
||||||
MZ_REGISTER_STATIC(abs_sym);
|
MZ_REGISTER_STATIC(abs_sym);
|
||||||
abs_sym = scheme_intern_symbol("abs");
|
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_add_global("ffi-lib?",
|
||||||
scheme_make_prim_w_arity(foreign_ffi_lib_p, "ffi-lib?", 1, 1), menv);
|
scheme_make_prim_w_arity(foreign_ffi_lib_p, "ffi-lib?", 1, 1), menv);
|
||||||
scheme_add_global("ffi-lib",
|
scheme_add_global("ffi-lib",
|
||||||
|
|
|
@ -333,6 +333,9 @@ Scheme_Env *scheme_engine_instance_init() {
|
||||||
scheme_init_symbol_table();
|
scheme_init_symbol_table();
|
||||||
scheme_init_module_path_table();
|
scheme_init_module_path_table();
|
||||||
scheme_init_type();
|
scheme_init_type();
|
||||||
|
#ifndef DONT_USE_FOREIGN
|
||||||
|
scheme_init_foreign_globals();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES)
|
#if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES)
|
||||||
GC_switch_out_master_gc();
|
GC_switch_out_master_gc();
|
||||||
|
|
|
@ -214,6 +214,7 @@ void scheme_init_parameterization(Scheme_Env *env);
|
||||||
void scheme_init_getenv(void);
|
void scheme_init_getenv(void);
|
||||||
|
|
||||||
#ifndef DONT_USE_FOREIGN
|
#ifndef DONT_USE_FOREIGN
|
||||||
|
void scheme_init_foreign_globals();
|
||||||
void scheme_init_foreign(Scheme_Env *env);
|
void scheme_init_foreign(Scheme_Env *env);
|
||||||
#endif
|
#endif
|
||||||
void scheme_init_place(Scheme_Env *env);
|
void scheme_init_place(Scheme_Env *env);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user