diff --git a/src/aclocal.m4 b/src/aclocal.m4 index 49e1bb120..2b9bee8cd 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -1196,7 +1196,6 @@ if test "${enable_boehm}" = auto -o "${enable_boehm}" = system; then fi else FASL_LIBS="${FASL_LIBS} -lgc" - EXTRA_OBJS="${EXTRA_OBJS} alloc_2.${OBJEXT}" AC_DEFINE(GBC_BOEHM, [1], [Use Boehm's garbage collector]) fi fi @@ -1228,7 +1227,6 @@ if test "${enable_boehm}" = "included"; then ECL_BOEHM_GC_HEADER='ecl/gc/gc.h' SUBDIRS="${SUBDIRS} gc" CORE_LIBS="-leclgc ${CORE_LIBS}" - EXTRA_OBJS="${EXTRA_OBJS} alloc_2.${OBJEXT}" if test "${enable_shared}" = "no"; then LIBRARIES="${LIBRARIES} ${LIBPREFIX}eclgc.${LIBEXT}" fi @@ -1304,7 +1302,6 @@ if test "${enable_libffi}" = "included"; then ECL_LIBFFI_HEADER='ecl/ffi.h' SUBDIRS="${SUBDIRS} libffi" CORE_LIBS="-leclffi ${CORE_LIBS}" - EXTRA_OBJS="${EXTRA_OBJS} alloc_2.${OBJEXT}" if test "${enable_shared}" = "no"; then LIBRARIES="${LIBRARIES} ${LIBPREFIX}eclffi.${LIBEXT}" fi diff --git a/src/c/main.d b/src/c/main.d index bb9c22fc3..f0e0c76ba 100644 --- a/src/c/main.d +++ b/src/c/main.d @@ -178,6 +178,7 @@ _ecl_alloc_env(cl_env_ptr parent) output->bds_stack.tl_bindings = NULL; #endif output->own_process = ECL_NIL; + output->c_stack.org = NULL; { size_t bytes = ecl_core.default_sigmask_bytes; if (bytes == 0) { @@ -331,9 +332,9 @@ cl_boot(int argc, char **argv) ARGV = argv; ecl_self = argv[0]; - init_unixint(0); - init_alloc(0); + ecl_add_module(ecl_module_gc); + init_unixint(0); init_big(); /* @@ -345,6 +346,9 @@ cl_boot(int argc, char **argv) env = ecl_core.first_env; ecl_init_first_env(env); + /* We need to enable GC because a lot of stuff is to be created */ + ecl_module_gc->module.enable(); + /* * 1) Initialize symbols and packages */ @@ -450,9 +454,6 @@ cl_boot(int argc, char **argv) /* These must come _after_ the packages and NIL/T have been created */ init_all_symbols(); - /* We need to enable GC because a lot of stuff is to be created */ - init_alloc(1); - /* Initialize the handler stack with the exception handler. */ cl_import2(ECL_SIGNAL_HANDLERS, cl_core.system_package); cl_export2(ECL_SIGNAL_HANDLERS, cl_core.system_package); diff --git a/src/c/alloc_2.d b/src/c/mem_bdwgc.d similarity index 95% rename from src/c/alloc_2.d rename to src/c/mem_bdwgc.d index 9fa5e5787..84acb9cad 100644 --- a/src/c/alloc_2.d +++ b/src/c/mem_bdwgc.d @@ -1,17 +1,16 @@ /* -*- Mode: C; c-basic-offset: 2; indent-tabs-mode: nil -*- */ /* vim: set filetype=c tabstop=2 shiftwidth=2 expandtab: */ -/* - * alloc_2.c - memory allocation based on the Boehm GC - * - * Copyright (c) 2001 Juan Jose Garcia Ripoll - * - * See file 'LICENSE' for the copyright details. - * - */ +/* mem_bdwgc.d - memory allocator and garbage collector based on bdwgc */ + +/* -- imports ---------------------------------------------------------------- */ +#include +#include +#include +#include #include -#include + #ifdef ECL_THREADS # ifdef ECL_WINDOWS_THREADS # include @@ -19,21 +18,24 @@ # include # endif #endif + #include #include #include + #ifdef ECL_WSOCK -#include +# include #endif #ifdef GBC_BOEHM -#include +# include +#endif static void (*GC_old_start_callback)(void) = NULL; static void gather_statistics(void); static void update_bytes_consed(void); static void ecl_mark_env(struct cl_env_struct *env); - + #ifdef GBC_BOEHM_PRECISE # if GBC_BOEHM # undef GBC_BOEHM_PRECISE @@ -45,9 +47,7 @@ static void **cl_object_free_list; # endif #endif -/********************************************************** - * OBJECT ALLOCATION * - **********************************************************/ +/* -- object allocation ------------------------------------------------------ */ void _ecl_set_max_heap_size(size_t new_size) @@ -145,8 +145,7 @@ out_of_memory(size_t requested_bytes) switch (method) { case 0: cl_error(1, @'ext::storage-exhausted'); break; - case 1: cl_cerror(2, @"Extend heap size", - @'ext::storage-exhausted'); + case 1: cl_cerror(2, @"Extend heap size", @'ext::storage-exhausted'); break; case 2: return output; @@ -474,6 +473,56 @@ ecl_dealloc(void *ptr) ecl_enable_interrupts_env(the_env); } +/* -- weak pointers ---------------------------------------------------------- */ + +cl_object +ecl_alloc_weak_pointer(cl_object o) +{ + const cl_env_ptr the_env = ecl_process_env(); + struct ecl_weak_pointer *obj; + ecl_disable_interrupts_env(the_env); + obj = GC_MALLOC_ATOMIC(sizeof(struct ecl_weak_pointer)); + ecl_enable_interrupts_env(the_env); + obj->t = t_weak_pointer; + obj->value = o; + if (!ECL_IMMEDIATE(o)) { + GC_GENERAL_REGISTER_DISAPPEARING_LINK((void**)&(obj->value), (void*)o); + si_set_finalizer((cl_object)obj, ECL_T); + } + return (cl_object)obj; +} + +static cl_object +ecl_weak_pointer_value(cl_object o) +{ + return ecl_weak_pointer(o); +} + +cl_object +si_make_weak_pointer(cl_object o) +{ + cl_object pointer = ecl_alloc_weak_pointer(o); + @(return pointer); +} + +cl_object +si_weak_pointer_value(cl_object o) +{ + const cl_env_ptr the_env = ecl_process_env(); + cl_object value; + if (ecl_unlikely(ecl_t_of(o) != t_weak_pointer)) + FEwrong_type_only_arg(@[ext::weak-pointer-value], o, + @[ext::weak-pointer]); + value = (cl_object)GC_call_with_alloc_lock((GC_fn_type)ecl_weak_pointer_value, o); + if (value) { + ecl_return2(the_env, value, ECL_T); + } else { + ecl_return2(the_env, ECL_NIL, ECL_NIL); + } +} + +/* -- graph traversal -------------------------------------------------------- */ + #ifdef GBC_BOEHM_PRECISE static cl_index to_bitmap(void *x, void *y) @@ -758,78 +807,7 @@ extern void (*GC_push_other_roots)(); static void (*old_GC_push_other_roots)(); static void stacks_scanner(); -void -init_alloc(int pass) -{ - if (pass == 1) { - GC_enable(); - return; - } - /* - * Garbage collector restrictions: we set up the garbage collector - * library to work as follows - * - * 1) The garbage collector shall not scan shared libraries - * explicitely. - * 2) We only detect objects that are referenced by a pointer to - * the begining or to the first byte. - * 3) Out of the incremental garbage collector, we only use the - * generational component. - * 4) GC should handle fork() which is used to run subprocess on - * some platforms. - */ - GC_set_no_dls(1); - GC_set_all_interior_pointers(0); - GC_set_time_limit(GC_TIME_UNLIMITED); -#ifndef ECL_MS_WINDOWS_HOST - GC_set_handle_fork(1); -#endif - GC_init(); -#ifdef ECL_THREADS -# if GC_VERSION_MAJOR > 7 || GC_VERSION_MINOR > 1 - GC_allow_register_threads(); -# endif -#endif - if (ecl_option_values[ECL_OPT_INCREMENTAL_GC]) { - GC_enable_incremental(); - } - GC_register_displacement(1); - GC_clear_roots(); - GC_disable(); - -#ifdef GBC_BOEHM_PRECISE -# ifdef GBC_BOEHM_OWN_MARKER - cl_object_free_list = (void **)GC_new_free_list_inner(); - cl_object_mark_proc_index = GC_new_proc((GC_mark_proc)cl_object_mark_proc); - cl_object_kind = GC_new_kind_inner(cl_object_free_list, - GC_MAKE_PROC(cl_object_mark_proc_index, 0), - FALSE, TRUE); -# endif -#endif /* !GBC_BOEHM_PRECISE */ - ecl_core.max_heap_size = ecl_option_values[ECL_OPT_HEAP_SIZE]; - GC_set_max_heap_size(ecl_core.max_heap_size); - /* Save some memory for the case we get tight. */ - if (ecl_core.max_heap_size == 0) { - cl_index size = ecl_option_values[ECL_OPT_HEAP_SAFETY_AREA]; - ecl_core.safety_region = ecl_alloc_atomic_unprotected(size); - } else if (ecl_core.safety_region) { - ecl_core.safety_region = 0; - } - - init_type_info(); - - old_GC_push_other_roots = GC_push_other_roots; - GC_push_other_roots = stacks_scanner; - GC_old_start_callback = GC_get_start_callback(); - GC_set_start_callback(gather_statistics); - GC_set_java_finalization(1); - GC_set_oom_fn(out_of_memory); - GC_set_warn_proc(no_warnings); -} - -/********************************************************** - * FINALIZATION * - **********************************************************/ +/* -- finalization ----------------------------------------------------------- */ static void standard_finalizer(cl_object o) @@ -1066,6 +1044,8 @@ si_set_finalizer(cl_object o, cl_object finalizer) @(return); } +/* -- GC stats --------------------------------------------------------------- */ + /* If we do not build our own version of the library, we do not have * control over the existence of this variable. */ #if GBC_BOEHM == 0 @@ -1159,9 +1139,7 @@ update_bytes_consed () { #endif } -/********************************************************** - * GARBAGE COLLECTOR * - **********************************************************/ +/* -- garbage collection ----------------------------------------------------- */ static void ecl_mark_env(struct cl_env_struct *env) @@ -1176,7 +1154,8 @@ ecl_mark_env(struct cl_env_struct *env) #ifdef ECL_THREADS if (env->bds_stack.tl_bindings) GC_push_all((void *)env->bds_stack.tl_bindings, - (void *)(env->bds_stack.tl_bindings + env->bds_stack.tl_bindings_size)); + (void *)(env->bds_stack.tl_bindings + + env->bds_stack.tl_bindings_size)); #endif GC_push_all((void *)env, (void *)(env + 1)); } @@ -1210,10 +1189,6 @@ stacks_scanner() (*old_GC_push_other_roots)(); } -/********************************************************** - * GARBAGE COLLECTION * - **********************************************************/ - void ecl_register_root(cl_object *p) { @@ -1243,54 +1218,112 @@ si_gc_dump() @(return); } -/********************************************************************** - * WEAK POINTERS - */ +/* -- module definition ------------------------------------------------------ */ -cl_object -ecl_alloc_weak_pointer(cl_object o) +static cl_object +create_gc() { - const cl_env_ptr the_env = ecl_process_env(); - struct ecl_weak_pointer *obj; - ecl_disable_interrupts_env(the_env); - obj = GC_MALLOC_ATOMIC(sizeof(struct ecl_weak_pointer)); - ecl_enable_interrupts_env(the_env); - obj->t = t_weak_pointer; - obj->value = o; - if (!ECL_IMMEDIATE(o)) { - GC_GENERAL_REGISTER_DISAPPEARING_LINK((void**)&(obj->value), (void*)o); - si_set_finalizer((cl_object)obj, ECL_T); + /* + * Garbage collector restrictions: we set up the garbage collector + * library to work as follows + * + * 1) The garbage collector shall not scan shared libraries + * explicitely. + * 2) We only detect objects that are referenced by a pointer to + * the begining or to the first byte. + * 3) Out of the incremental garbage collector, we only use the + * generational component. + * 4) GC should handle fork() which is used to run subprocess on + * some platforms. + */ + GC_set_no_dls(1); + GC_set_all_interior_pointers(0); + GC_set_time_limit(GC_TIME_UNLIMITED); +#ifndef ECL_MS_WINDOWS_HOST + GC_set_handle_fork(1); +#endif + GC_init(); +#ifdef ECL_THREADS +# if GC_VERSION_MAJOR > 7 || GC_VERSION_MINOR > 1 + GC_allow_register_threads(); +# endif +#endif + if (ecl_option_values[ECL_OPT_INCREMENTAL_GC]) { + GC_enable_incremental(); } - return (cl_object)obj; + GC_register_displacement(1); + GC_clear_roots(); + GC_disable(); + +#ifdef GBC_BOEHM_PRECISE +# ifdef GBC_BOEHM_OWN_MARKER + cl_object_free_list = (void **)GC_new_free_list_inner(); + cl_object_mark_proc_index = GC_new_proc((GC_mark_proc)cl_object_mark_proc); + cl_object_kind = GC_new_kind_inner(cl_object_free_list, + GC_MAKE_PROC(cl_object_mark_proc_index, 0), + FALSE, TRUE); +# endif +#endif /* !GBC_BOEHM_PRECISE */ + ecl_core.max_heap_size = ecl_option_values[ECL_OPT_HEAP_SIZE]; + GC_set_max_heap_size(ecl_core.max_heap_size); + /* Save some memory for the case we get tight. */ + if (ecl_core.max_heap_size == 0) { + cl_index size = ecl_option_values[ECL_OPT_HEAP_SAFETY_AREA]; + ecl_core.safety_region = ecl_alloc_atomic_unprotected(size); + } else if (ecl_core.safety_region) { + ecl_core.safety_region = 0; + } + + init_type_info(); + + old_GC_push_other_roots = GC_push_other_roots; + GC_push_other_roots = stacks_scanner; + GC_old_start_callback = GC_get_start_callback(); + GC_set_start_callback(gather_statistics); + GC_set_java_finalization(1); + GC_set_oom_fn(out_of_memory); + GC_set_warn_proc(no_warnings); + + return ECL_NIL; } static cl_object -ecl_weak_pointer_value(cl_object o) +enable_gc () { - return ecl_weak_pointer(o); + GC_enable(); + return ECL_NIL; } -cl_object -si_make_weak_pointer(cl_object o) +static cl_object +disable_gc () { - cl_object pointer = ecl_alloc_weak_pointer(o); - @(return pointer); + GC_disable(); + return ECL_NIL; } -cl_object -si_weak_pointer_value(cl_object o) +static cl_object +init_cpu(cl_env_ptr the_env) { - const cl_env_ptr the_env = ecl_process_env(); - cl_object value; - if (ecl_unlikely(ecl_t_of(o) != t_weak_pointer)) - FEwrong_type_only_arg(@[ext::weak-pointer-value], o, - @[ext::weak-pointer]); - value = (cl_object)GC_call_with_alloc_lock((GC_fn_type)ecl_weak_pointer_value, o); - if (value) { - ecl_return2(the_env, value, ECL_T); - } else { - ecl_return2(the_env, ECL_NIL, ECL_NIL); - } +#ifdef GBC_BOEHM + struct GC_stack_base stack; + GC_get_stack_base(&stack); + the_env->c_stack.org = (char*)stack.mem_base; +#endif + return ECL_NIL; } -#endif /* GBC_BOEHM */ +ecl_def_ct_base_string(str_gc, "GC", 2, static, const); + +static struct ecl_module module_gc = { + .name = str_gc, + .create = create_gc, + .enable = enable_gc, + .init_env = ecl_module_no_op_env, + .init_cpu = init_cpu, + .free_cpu = ecl_module_no_op_cpu, + .free_env = ecl_module_no_op_env, + .disable = disable_gc, + .destroy = ecl_module_no_op +}; + +cl_object ecl_module_gc = (cl_object)&module_gc; diff --git a/src/c/process.d b/src/c/process.d index 094b567fe..89827f590 100644 --- a/src/c/process.d +++ b/src/c/process.d @@ -169,35 +169,18 @@ unregister_gc_thread() cl_env_ptr ecl_adopt_cpu() { - struct cl_env_struct env_aux[1]; - struct ecl_interrupt_struct int_aux[1]; cl_env_ptr the_env = ecl_process_env_unsafe(); ecl_thread_t current; if (the_env != NULL) return the_env; - /* Ensure that the thread is known to the GC. */ register_gc_thread(); ecl_set_process_self(current); - /* We need a fake env to allow for interrupts blocking and to set up frame - * stacks or other stuff that is needed by ecl_init_env. Since the fake env is - * allocated on the stack, we can safely store pointers to memory allocated by - * the gc there. */ - memset(env_aux, 0, sizeof(*env_aux)); - env_aux->disable_interrupts = 1; - env_aux->interrupt_struct = int_aux; - env_aux->interrupt_struct->pending_interrupt = ECL_NIL; - ecl_mutex_init(&env_aux->interrupt_struct->signal_queue_lock, FALSE); - env_aux->interrupt_struct->signal_queue = ECL_NIL; - ecl_set_process_env(env_aux); - env_aux->thread = current; - ecl_init_env(env_aux); - - /* Allocate, initialize and switch to the real environment. */ the_env = _ecl_alloc_env(0); - memcpy(the_env, env_aux, sizeof(*the_env)); + the_env->thread = current; + ecl_set_process_env(the_env); + ecl_init_env(the_env); add_env(the_env); init_tl_bindings(ECL_NIL, the_env); - ecl_set_process_env(the_env); ecl_modules_init_cpu(the_env); return the_env; @@ -254,7 +237,6 @@ thread_entry_point(void *ptr) CloseHandle(the_env->thread); #endif _ecl_dealloc_env(the_env); - #ifdef ECL_WINDOWS_THREADS return 1; #else @@ -354,6 +336,7 @@ init_process(void) ecl_core.threads = ecl_make_stack(16); #endif ecl_set_process_env(the_env); + the_env->c_stack.org = NULL; the_env->default_sigmask = NULL; the_env->method_cache = NULL; the_env->slot_cache = NULL; diff --git a/src/c/stacks.d b/src/c/stacks.d index 4a6a81b5c..011b754b8 100644 --- a/src/c/stacks.d +++ b/src/c/stacks.d @@ -33,17 +33,11 @@ ecl_cs_init(cl_env_ptr env) cl_index margin = ecl_option_values[ECL_OPT_C_STACK_SAFETY_AREA]; cl_index new_size = ecl_option_values[ECL_OPT_C_STACK_SIZE]; cl_index max_size = new_size; -#ifdef GBC_BOEHM - struct GC_stack_base base; - if (GC_get_stack_base(&base) == GC_SUCCESS) - env->c_stack.org = (char*)base.mem_base; - else + if (env->c_stack.org == NULL) { + /* Rough estimate. Not very safe. We assume that cl_boot() is invoked from + * the main() routine of the program. */ env->c_stack.org = (char*)(&env); -#else - /* Rough estimate. Not very safe. We assume that cl_boot() is invoked from the - * main() routine of the program. */ - env->c_stack.org = (char*)(&env); -#endif + } #ifdef ECL_CAN_SET_STACK_SIZE { struct rlimit rl; diff --git a/src/c/threads/thread.d b/src/c/threads/thread.d index 4028059d3..7b266fa29 100644 --- a/src/c/threads/thread.d +++ b/src/c/threads/thread.d @@ -164,7 +164,9 @@ ecl_import_current_thread(cl_object name, cl_object bindings) cl_env_ptr the_env; if (ecl_process_env_unsafe() != NULL) return 0; + ecl_module_gc->module.disable(); the_env = ecl_adopt_cpu(); + ecl_module_gc->module.enable(); ecl_enable_interrupts_env(the_env); process = alloc_process(name, ECL_NIL); @@ -482,7 +484,6 @@ init_threads() cl_object process, _env = ecl_cast_ptr(cl_object,the_env); /* We have to set the environment before any allocation takes place, * so that the interrupt handling code works. */ - ecl_cs_init(the_env); process = ecl_alloc_object(t_process); process->process.phase = ECL_PROCESS_ACTIVE; process->process.name = @'si::top-level'; diff --git a/src/configure b/src/configure index 84ac57192..af80a9916 100755 --- a/src/configure +++ b/src/configure @@ -7274,8 +7274,6 @@ fi if test ${enable_boehm} = "no" ; then as_fn_error $? "Boehm GC library is currently needed to build ECL" "$LINENO" 5; - EXTRA_OBJS="${EXTRA_OBJS} alloc.${OBJEXT} gbc.${OBJEXT}" - enable_smallcons="no" else @@ -7528,7 +7526,6 @@ printf "%s\n" "${system_boehm} " >&6; } fi else FASL_LIBS="${FASL_LIBS} -lgc" - EXTRA_OBJS="${EXTRA_OBJS} alloc_2.${OBJEXT}" printf "%s\n" "#define GBC_BOEHM 1" >>confdefs.h @@ -7558,7 +7555,6 @@ printf "%s\n" "$as_me: Configuring included Boehm GC library:" >&6;} ECL_BOEHM_GC_HEADER='ecl/gc/gc.h' SUBDIRS="${SUBDIRS} gc" CORE_LIBS="-leclgc ${CORE_LIBS}" - EXTRA_OBJS="${EXTRA_OBJS} alloc_2.${OBJEXT}" if test "${enable_shared}" = "no"; then LIBRARIES="${LIBRARIES} ${LIBPREFIX}eclgc.${LIBEXT}" fi @@ -7602,6 +7598,7 @@ LSP_FEATURES="${LSP_FEATURES} :boehm-gc" LSP_FEATURES="${LSP_FEATURES} :ecl-weak-hash" + EXTRA_OBJS="${EXTRA_OBJS} mem_bdwgc.${OBJEXT}" fi if test ${enable_smallcons} = "yes" ; then @@ -7715,7 +7712,6 @@ printf "%s\n" "$as_me: Configuring included libffi library:" >&6;} ECL_LIBFFI_HEADER='ecl/ffi.h' SUBDIRS="${SUBDIRS} libffi" CORE_LIBS="-leclffi ${CORE_LIBS}" - EXTRA_OBJS="${EXTRA_OBJS} alloc_2.${OBJEXT}" if test "${enable_shared}" = "no"; then LIBRARIES="${LIBRARIES} ${LIBPREFIX}eclffi.${LIBEXT}" fi diff --git a/src/configure.ac b/src/configure.ac index 97e81b523..13bc956a1 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -603,12 +603,11 @@ dnl ---------------------------------------------------------------------- dnl Boehm-Weiser garbage collector if test ${enable_boehm} = "no" ; then AC_MSG_ERROR([Boehm GC library is currently needed to build ECL]); - EXTRA_OBJS="${EXTRA_OBJS} alloc.${OBJEXT} gbc.${OBJEXT}" - enable_smallcons="no" else ECL_BOEHM_GC ECL_ADD_FEATURE(boehm-gc) ECL_ADD_FEATURE(ecl-weak-hash) + EXTRA_OBJS="${EXTRA_OBJS} mem_bdwgc.${OBJEXT}" fi if test ${enable_smallcons} = "yes" ; then AC_DEFINE([ECL_SMALL_CONS], [], [ECL_SMALL_CONS]) diff --git a/src/ecl/configpre.h b/src/ecl/configpre.h index 249ec5052..2403a3436 100644 --- a/src/ecl/configpre.h +++ b/src/ecl/configpre.h @@ -3,7 +3,7 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD -/* Define to 1 if the `closedir' function returns void instead of int. */ +/* Define to 1 if the 'closedir' function returns void instead of int. */ #undef CLOSEDIR_VOID /* ECL_AVOID_FPE_H */ @@ -85,229 +85,229 @@ /* GBC_BOEHM_PRECISE */ #undef GBC_BOEHM_PRECISE -/* Define to 1 if you have the `alarm' function. */ +/* Define to 1 if you have the 'alarm' function. */ #undef HAVE_ALARM -/* Define to 1 if you have the `backtrace' function. */ +/* Define to 1 if you have the 'backtrace' function. */ #undef HAVE_BACKTRACE -/* Define to 1 if you have the `backtrace_symbols' function. */ +/* Define to 1 if you have the 'backtrace_symbols' function. */ #undef HAVE_BACKTRACE_SYMBOLS -/* Define to 1 if you have the `cabs' function. */ +/* Define to 1 if you have the 'cabs' function. */ #undef HAVE_CABS -/* Define to 1 if you have the `cabsf' function. */ +/* Define to 1 if you have the 'cabsf' function. */ #undef HAVE_CABSF -/* Define to 1 if you have the `cabsl' function. */ +/* Define to 1 if you have the 'cabsl' function. */ #undef HAVE_CABSL -/* Define to 1 if you have the `cacos' function. */ +/* Define to 1 if you have the 'cacos' function. */ #undef HAVE_CACOS -/* Define to 1 if you have the `cacosf' function. */ +/* Define to 1 if you have the 'cacosf' function. */ #undef HAVE_CACOSF -/* Define to 1 if you have the `cacosh' function. */ +/* Define to 1 if you have the 'cacosh' function. */ #undef HAVE_CACOSH -/* Define to 1 if you have the `cacoshf' function. */ +/* Define to 1 if you have the 'cacoshf' function. */ #undef HAVE_CACOSHF -/* Define to 1 if you have the `cacoshl' function. */ +/* Define to 1 if you have the 'cacoshl' function. */ #undef HAVE_CACOSHL -/* Define to 1 if you have the `cacosl' function. */ +/* Define to 1 if you have the 'cacosl' function. */ #undef HAVE_CACOSL -/* Define to 1 if you have the `casin' function. */ +/* Define to 1 if you have the 'casin' function. */ #undef HAVE_CASIN -/* Define to 1 if you have the `casinf' function. */ +/* Define to 1 if you have the 'casinf' function. */ #undef HAVE_CASINF -/* Define to 1 if you have the `casinh' function. */ +/* Define to 1 if you have the 'casinh' function. */ #undef HAVE_CASINH -/* Define to 1 if you have the `casinhf' function. */ +/* Define to 1 if you have the 'casinhf' function. */ #undef HAVE_CASINHF -/* Define to 1 if you have the `casinhl' function. */ +/* Define to 1 if you have the 'casinhl' function. */ #undef HAVE_CASINHL -/* Define to 1 if you have the `casinl' function. */ +/* Define to 1 if you have the 'casinl' function. */ #undef HAVE_CASINL -/* Define to 1 if you have the `catan' function. */ +/* Define to 1 if you have the 'catan' function. */ #undef HAVE_CATAN -/* Define to 1 if you have the `catanf' function. */ +/* Define to 1 if you have the 'catanf' function. */ #undef HAVE_CATANF -/* Define to 1 if you have the `catanh' function. */ +/* Define to 1 if you have the 'catanh' function. */ #undef HAVE_CATANH -/* Define to 1 if you have the `catanhf' function. */ +/* Define to 1 if you have the 'catanhf' function. */ #undef HAVE_CATANHF -/* Define to 1 if you have the `catanhl' function. */ +/* Define to 1 if you have the 'catanhl' function. */ #undef HAVE_CATANHL -/* Define to 1 if you have the `catanl' function. */ +/* Define to 1 if you have the 'catanl' function. */ #undef HAVE_CATANL -/* Define to 1 if you have the `ccos' function. */ +/* Define to 1 if you have the 'ccos' function. */ #undef HAVE_CCOS -/* Define to 1 if you have the `ccosf' function. */ +/* Define to 1 if you have the 'ccosf' function. */ #undef HAVE_CCOSF -/* Define to 1 if you have the `ccosh' function. */ +/* Define to 1 if you have the 'ccosh' function. */ #undef HAVE_CCOSH -/* Define to 1 if you have the `ccoshf' function. */ +/* Define to 1 if you have the 'ccoshf' function. */ #undef HAVE_CCOSHF -/* Define to 1 if you have the `ccoshl' function. */ +/* Define to 1 if you have the 'ccoshl' function. */ #undef HAVE_CCOSHL -/* Define to 1 if you have the `ccosl' function. */ +/* Define to 1 if you have the 'ccosl' function. */ #undef HAVE_CCOSL -/* Define to 1 if you have the `ceilf' function. */ +/* Define to 1 if you have the 'ceilf' function. */ #undef HAVE_CEILF -/* Define to 1 if you have the `cexp' function. */ +/* Define to 1 if you have the 'cexp' function. */ #undef HAVE_CEXP -/* Define to 1 if you have the `cexpf' function. */ +/* Define to 1 if you have the 'cexpf' function. */ #undef HAVE_CEXPF -/* Define to 1 if you have the `cexpl' function. */ +/* Define to 1 if you have the 'cexpl' function. */ #undef HAVE_CEXPL -/* Define to 1 if you have the `cimag' function. */ +/* Define to 1 if you have the 'cimag' function. */ #undef HAVE_CIMAG -/* Define to 1 if you have the `cimagf' function. */ +/* Define to 1 if you have the 'cimagf' function. */ #undef HAVE_CIMAGF -/* Define to 1 if you have the `cimagl' function. */ +/* Define to 1 if you have the 'cimagl' function. */ #undef HAVE_CIMAGL -/* Define to 1 if you have the `clock_gettime' function. */ +/* Define to 1 if you have the 'clock_gettime' function. */ #undef HAVE_CLOCK_GETTIME -/* Define to 1 if you have the `clog' function. */ +/* Define to 1 if you have the 'clog' function. */ #undef HAVE_CLOG -/* Define to 1 if you have the `clogf' function. */ +/* Define to 1 if you have the 'clogf' function. */ #undef HAVE_CLOGF -/* Define to 1 if you have the `clogl' function. */ +/* Define to 1 if you have the 'clogl' function. */ #undef HAVE_CLOGL -/* Define to 1 if you have the `conj' function. */ +/* Define to 1 if you have the 'conj' function. */ #undef HAVE_CONJ -/* Define to 1 if you have the `conjf' function. */ +/* Define to 1 if you have the 'conjf' function. */ #undef HAVE_CONJF -/* Define to 1 if you have the `conjl' function. */ +/* Define to 1 if you have the 'conjl' function. */ #undef HAVE_CONJL -/* Define to 1 if you have the `copysign' function. */ +/* Define to 1 if you have the 'copysign' function. */ #undef HAVE_COPYSIGN -/* Define to 1 if you have the `cosf' function. */ +/* Define to 1 if you have the 'cosf' function. */ #undef HAVE_COSF -/* Define to 1 if you have the `coshf' function. */ +/* Define to 1 if you have the 'coshf' function. */ #undef HAVE_COSHF -/* Define to 1 if you have the `cpow' function. */ +/* Define to 1 if you have the 'cpow' function. */ #undef HAVE_CPOW -/* Define to 1 if you have the `cpowf' function. */ +/* Define to 1 if you have the 'cpowf' function. */ #undef HAVE_CPOWF -/* Define to 1 if you have the `cpowl' function. */ +/* Define to 1 if you have the 'cpowl' function. */ #undef HAVE_CPOWL -/* Define to 1 if you have the `creal' function. */ +/* Define to 1 if you have the 'creal' function. */ #undef HAVE_CREAL -/* Define to 1 if you have the `crealf' function. */ +/* Define to 1 if you have the 'crealf' function. */ #undef HAVE_CREALF -/* Define to 1 if you have the `creall' function. */ +/* Define to 1 if you have the 'creall' function. */ #undef HAVE_CREALL -/* Define to 1 if you have the `csin' function. */ +/* Define to 1 if you have the 'csin' function. */ #undef HAVE_CSIN -/* Define to 1 if you have the `csinf' function. */ +/* Define to 1 if you have the 'csinf' function. */ #undef HAVE_CSINF -/* Define to 1 if you have the `csinh' function. */ +/* Define to 1 if you have the 'csinh' function. */ #undef HAVE_CSINH -/* Define to 1 if you have the `csinhf' function. */ +/* Define to 1 if you have the 'csinhf' function. */ #undef HAVE_CSINHF -/* Define to 1 if you have the `csinhl' function. */ +/* Define to 1 if you have the 'csinhl' function. */ #undef HAVE_CSINHL -/* Define to 1 if you have the `csinl' function. */ +/* Define to 1 if you have the 'csinl' function. */ #undef HAVE_CSINL -/* Define to 1 if you have the `csqrt' function. */ +/* Define to 1 if you have the 'csqrt' function. */ #undef HAVE_CSQRT -/* Define to 1 if you have the `csqrtf' function. */ +/* Define to 1 if you have the 'csqrtf' function. */ #undef HAVE_CSQRTF -/* Define to 1 if you have the `csqrtl' function. */ +/* Define to 1 if you have the 'csqrtl' function. */ #undef HAVE_CSQRTL -/* Define to 1 if you have the `ctan' function. */ +/* Define to 1 if you have the 'ctan' function. */ #undef HAVE_CTAN -/* Define to 1 if you have the `ctanf' function. */ +/* Define to 1 if you have the 'ctanf' function. */ #undef HAVE_CTANF -/* Define to 1 if you have the `ctanh' function. */ +/* Define to 1 if you have the 'ctanh' function. */ #undef HAVE_CTANH -/* Define to 1 if you have the `ctanhf' function. */ +/* Define to 1 if you have the 'ctanhf' function. */ #undef HAVE_CTANHF -/* Define to 1 if you have the `ctanhl' function. */ +/* Define to 1 if you have the 'ctanhl' function. */ #undef HAVE_CTANHL -/* Define to 1 if you have the `ctanl' function. */ +/* Define to 1 if you have the 'ctanl' function. */ #undef HAVE_CTANL /* Define to 1 if you have the header file. */ #undef HAVE_DIRENT_H -/* Define to 1 if you have the `dladdr' function. */ +/* Define to 1 if you have the 'dladdr' function. */ #undef HAVE_DLADDR /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H -/* Define to 1 if the system has the type `double complex'. */ +/* Define to 1 if the system has the type 'double complex'. */ #undef HAVE_DOUBLE_COMPLEX /* HAVE_ENVIRON */ #undef HAVE_ENVIRON -/* Define to 1 if you have the `expf' function. */ +/* Define to 1 if you have the 'expf' function. */ #undef HAVE_EXPF -/* Define to 1 if you have the `fabsf' function. */ +/* Define to 1 if you have the 'fabsf' function. */ #undef HAVE_FABSF /* Define to 1 if you have the header file. */ @@ -319,61 +319,61 @@ /* Define to 1 if you have the header file. */ #undef HAVE_FENV_H -/* Define to 1 if the system has the type `float complex'. */ +/* Define to 1 if the system has the type 'float complex'. */ #undef HAVE_FLOAT_COMPLEX /* Define to 1 if you have the header file. */ #undef HAVE_FLOAT_H -/* Define to 1 if you have the `floor' function. */ +/* Define to 1 if you have the 'floor' function. */ #undef HAVE_FLOOR -/* Define to 1 if you have the `floorf' function. */ +/* Define to 1 if you have the 'floorf' function. */ #undef HAVE_FLOORF -/* Define to 1 if you have the `fork' function. */ +/* Define to 1 if you have the 'fork' function. */ #undef HAVE_FORK -/* Define to 1 if you have the `frexpf' function. */ +/* Define to 1 if you have the 'frexpf' function. */ #undef HAVE_FREXPF -/* Define to 1 if you have the `fseeko' function. */ +/* Define to 1 if you have the 'fseeko' function. */ #undef HAVE_FSEEKO -/* Define to 1 if you have the `getcwd' function. */ +/* Define to 1 if you have the 'getcwd' function. */ #undef HAVE_GETCWD -/* Define to 1 if you have the `gethostbyaddr' function. */ +/* Define to 1 if you have the 'gethostbyaddr' function. */ #undef HAVE_GETHOSTBYADDR -/* Define to 1 if you have the `gethostbyname' function. */ +/* Define to 1 if you have the 'gethostbyname' function. */ #undef HAVE_GETHOSTBYNAME -/* Define to 1 if you have the `getpagesize' function. */ +/* Define to 1 if you have the 'getpagesize' function. */ #undef HAVE_GETPAGESIZE -/* Define to 1 if you have the `getrusage' function. */ +/* Define to 1 if you have the 'getrusage' function. */ #undef HAVE_GETRUSAGE -/* Define to 1 if you have the `gettimeofday' function. */ +/* Define to 1 if you have the 'gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the `isatty' function. */ +/* Define to 1 if you have the 'isatty' function. */ #undef HAVE_ISATTY -/* Define to 1 if you have the `ldexpf' function. */ +/* Define to 1 if you have the 'ldexpf' function. */ #undef HAVE_LDEXPF /* HAVE_LIBFFI */ #undef HAVE_LIBFFI -/* Define to 1 if you have the `gc' library (-lgc). */ +/* Define to 1 if you have the 'gc' library (-lgc). */ #undef HAVE_LIBGC -/* Define to 1 if you have the `sun' library (-lsun). */ +/* Define to 1 if you have the 'sun' library (-lsun). */ #undef HAVE_LIBSUN /* Define to 1 if you have the header file. */ @@ -382,50 +382,50 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LINK_H -/* Define to 1 if you have the `log1p' function. */ +/* Define to 1 if you have the 'log1p' function. */ #undef HAVE_LOG1P -/* Define to 1 if you have the `log1pf' function. */ +/* Define to 1 if you have the 'log1pf' function. */ #undef HAVE_LOG1PF -/* Define to 1 if you have the `log1pl' function. */ +/* Define to 1 if you have the 'log1pl' function. */ #undef HAVE_LOG1PL -/* Define to 1 if you have the `logf' function. */ +/* Define to 1 if you have the 'logf' function. */ #undef HAVE_LOGF -/* Define to 1 if the system has the type `long complex'. */ +/* Define to 1 if the system has the type 'long complex'. */ #undef HAVE_LONG_COMPLEX -/* Define to 1 if you have the `lstat' function. */ +/* Define to 1 if you have the 'lstat' function. */ #undef HAVE_LSTAT /* Define to 1 if you have the header file. */ #undef HAVE_MACH_O_DYLD_H -/* Define to 1 if your system has a GNU libc compatible `malloc' function, and +/* Define to 1 if your system has a GNU libc compatible 'malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC -/* Define to 1 if you have the `memmove' function. */ +/* Define to 1 if you have the 'memmove' function. */ #undef HAVE_MEMMOVE -/* Define to 1 if you have the `memset' function. */ +/* Define to 1 if you have the 'memset' function. */ #undef HAVE_MEMSET -/* Define to 1 if you have the `mkdir' function. */ +/* Define to 1 if you have the 'mkdir' function. */ #undef HAVE_MKDIR -/* Define to 1 if you have the `mkstemp' function. */ +/* Define to 1 if you have the 'mkstemp' function. */ #undef HAVE_MKSTEMP -/* Define to 1 if you have a working `mmap' system call. */ +/* Define to 1 if you have a working 'mmap' system call. */ #undef HAVE_MMAP -/* Define to 1 if you have the `nanosleep' function. */ +/* Define to 1 if you have the 'nanosleep' function. */ #undef HAVE_NANOSLEEP -/* Define to 1 if you have the header file, and it defines `DIR'. */ +/* Define to 1 if you have the header file, and it defines 'DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ @@ -437,62 +437,62 @@ /* HAVE_POSIX_RWLOCK */ #undef HAVE_POSIX_RWLOCK -/* Define to 1 if you have the `powf' function. */ +/* Define to 1 if you have the 'powf' function. */ #undef HAVE_POWF -/* Define to 1 if you have the `pthread_condattr_setclock' function. */ +/* Define to 1 if you have the 'pthread_condattr_setclock' function. */ #undef HAVE_PTHREAD_CONDATTR_SETCLOCK -/* Define to 1 if you have the `pthread_mutex_timedlock' function. */ +/* Define to 1 if you have the 'pthread_mutex_timedlock' function. */ #undef HAVE_PTHREAD_MUTEX_TIMEDLOCK -/* Define to 1 if the system has the type `pthread_rwlock_t'. */ +/* Define to 1 if the system has the type 'pthread_rwlock_t'. */ #undef HAVE_PTHREAD_RWLOCK_T -/* Define to 1 if the system has the type `ptrdiff_t'. */ +/* Define to 1 if the system has the type 'ptrdiff_t'. */ #undef HAVE_PTRDIFF_T -/* Define to 1 if you have the `putenv' function. */ +/* Define to 1 if you have the 'putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the header file. */ #undef HAVE_PWD_H -/* Define to 1 if your system has a GNU libc compatible `realloc' function, +/* Define to 1 if your system has a GNU libc compatible 'realloc' function, and to 0 otherwise. */ #undef HAVE_REALLOC /* Define to 1 if you have the header file. */ #undef HAVE_SCHED_H -/* Define to 1 if you have the `sched_yield' function. */ +/* Define to 1 if you have the 'sched_yield' function. */ #undef HAVE_SCHED_YIELD -/* Define to 1 if you have the `select' function. */ +/* Define to 1 if you have the 'select' function. */ #undef HAVE_SELECT -/* Define to 1 if you have the `setenv' function. */ +/* Define to 1 if you have the 'setenv' function. */ #undef HAVE_SETENV -/* Define to 1 if you have the `sigprocmask' function. */ +/* Define to 1 if you have the 'sigprocmask' function. */ #undef HAVE_SIGPROCMASK -/* Define to 1 if you have the `sinf' function. */ +/* Define to 1 if you have the 'sinf' function. */ #undef HAVE_SINF -/* Define to 1 if you have the `sinhf' function. */ +/* Define to 1 if you have the 'sinhf' function. */ #undef HAVE_SINHF -/* Define to 1 if you have the `socket' function. */ +/* Define to 1 if you have the 'socket' function. */ #undef HAVE_SOCKET -/* Define to 1 if you have the `sqrt' function. */ +/* Define to 1 if you have the 'sqrt' function. */ #undef HAVE_SQRT -/* Define to 1 if you have the `sqrtf' function. */ +/* Define to 1 if you have the 'sqrtf' function. */ #undef HAVE_SQRTF -/* Define to 1 if `stat' has the bug that it succeeds when given the +/* Define to 1 if 'stat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG @@ -511,13 +511,13 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H -/* Define to 1 if you have the `strcasecmp' function. */ +/* Define to 1 if you have the 'strcasecmp' function. */ #undef HAVE_STRCASECMP -/* Define to 1 if you have the `strchr' function. */ +/* Define to 1 if you have the 'strchr' function. */ #undef HAVE_STRCHR -/* Define to 1 if you have the `strerror' function. */ +/* Define to 1 if you have the 'strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ @@ -526,13 +526,13 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Define to 1 if you have the `strtol' function. */ +/* Define to 1 if you have the 'strtol' function. */ #undef HAVE_STRTOL -/* Define to 1 if you have the `system' function. */ +/* Define to 1 if you have the 'system' function. */ #undef HAVE_SYSTEM -/* Define to 1 if you have the header file, and it defines `DIR'. +/* Define to 1 if you have the header file, and it defines 'DIR'. */ #undef HAVE_SYS_DIR_H @@ -542,7 +542,7 @@ /* HAVE_SYS_MMAN_H */ #undef HAVE_SYS_MMAN_H -/* Define to 1 if you have the header file, and it defines `DIR'. +/* Define to 1 if you have the header file, and it defines 'DIR'. */ #undef HAVE_SYS_NDIR_H @@ -573,28 +573,28 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H -/* Define to 1 if you have the `tanf' function. */ +/* Define to 1 if you have the 'tanf' function. */ #undef HAVE_TANF -/* Define to 1 if you have the `tanhf' function. */ +/* Define to 1 if you have the 'tanhf' function. */ #undef HAVE_TANHF -/* Define to 1 if you have the `times' function. */ +/* Define to 1 if you have the 'times' function. */ #undef HAVE_TIMES -/* Define to 1 if you have the `tzset' function. */ +/* Define to 1 if you have the 'tzset' function. */ #undef HAVE_TZSET /* Define to 1 if you have the header file. */ #undef HAVE_ULIMIT_H -/* Define to 1 if you have the `uname' function. */ +/* Define to 1 if you have the 'uname' function. */ #undef HAVE_UNAME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if you have the `vfork' function. */ +/* Define to 1 if you have the 'vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ @@ -603,16 +603,16 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H -/* Define to 1 if `fork' works. */ +/* Define to 1 if 'fork' works. */ #undef HAVE_WORKING_FORK -/* Define to 1 if `vfork' works. */ +/* Define to 1 if 'vfork' works. */ #undef HAVE_WORKING_VFORK -/* Define to 1 if the system has the type `_Bool'. */ +/* Define to 1 if the system has the type '_Bool'. */ #undef HAVE__BOOL -/* Define to 1 if `lstat' dereferences a symlink specified with a trailing +/* Define to 1 if 'lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK @@ -634,19 +634,19 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Define as the return type of signal handlers (`int' or `void'). */ +/* Define as the return type of signal handlers ('int' or 'void'). */ #undef RETSIGTYPE -/* Define to the type of arg 1 for `select'. */ +/* Define to the type of arg 1 for 'select'. */ #undef SELECT_TYPE_ARG1 -/* Define to the type of args 2, 3 and 4 for `select'. */ +/* Define to the type of args 2, 3 and 4 for 'select'. */ #undef SELECT_TYPE_ARG234 -/* Define to the type of arg 5 for `select'. */ +/* Define to the type of arg 5 for 'select'. */ #undef SELECT_TYPE_ARG5 -/* Define to 1 if all of the C90 standard headers exist (not just the ones +/* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS @@ -655,7 +655,7 @@ macro is obsolete. */ #undef TIME_WITH_SYS_TIME -/* Define to 1 if your declares `struct tm'. */ +/* Define to 1 if your declares 'struct tm'. */ #undef TM_IN_SYS_TIME /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most @@ -685,7 +685,7 @@ #define below would cause a syntax error. */ #undef _UINT8_T -/* Define to empty if `const' does not conform to ANSI C. */ +/* Define to empty if 'const' does not conform to ANSI C. */ #undef const /* ecl_int16_t */ @@ -718,7 +718,7 @@ /* compiler understands long long */ #undef ecl_ulong_long_t -/* Define to `__inline__' or `__inline' if that's what the C compiler +/* Define to '__inline__' or '__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline @@ -749,7 +749,7 @@ /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc -/* Define to `unsigned int' if does not define. */ +/* Define as 'unsigned int' if doesn't define. */ #undef size_t /* Define to the type of an unsigned integer type of width exactly 16 bits if @@ -768,9 +768,9 @@ such a type exists and the standard includes do not define it. */ #undef uint8_t -/* Define as `fork' if `vfork' does not work. */ +/* Define as 'fork' if 'vfork' does not work. */ #undef vfork -/* Define to empty if the keyword `volatile' does not work. Warning: valid - code using `volatile' can become incorrect without. Disable with care. */ +/* Define to empty if the keyword 'volatile' does not work. Warning: valid + code using 'volatile' can become incorrect without. Disable with care. */ #undef volatile diff --git a/src/h/internal.h b/src/h/internal.h index fbddd8749..689e8e31f 100755 --- a/src/h/internal.h +++ b/src/h/internal.h @@ -24,16 +24,13 @@ extern "C" { /* booting */ extern void init_all_symbols(void); -extern void init_alloc(int pass); extern void init_backq(void); extern void init_big(); extern void init_clos(void); extern void init_error(void); extern void init_eval(void); extern void init_file(void); -#ifndef GBC_BOEHM -extern void init_GC(void); -#endif +extern void init_gc(void); extern void init_macros(void); extern void init_read(void); @@ -56,7 +53,7 @@ extern void free_modules(void); extern cl_env_ptr _ecl_alloc_env(cl_env_ptr parent); extern void _ecl_dealloc_env(cl_env_ptr); -/* alloc.d/alloc_2.d */ +/* mem_bdwgc.d */ #ifdef GBC_BOEHM #define ECL_COMPACT_OBJECT_EXTRA(x) ((void*)((x)->array.displaced)) @@ -66,6 +63,10 @@ extern cl_object ecl_alloc_bytecodes(cl_index data_size, cl_index code_size); extern cl_index ecl_object_byte_size(cl_type t); extern cl_index ecl_next_stamp(); +/* modules.c */ +extern ECL_API cl_object ecl_module_dummy; +extern ECL_API cl_object ecl_module_gc; + /* array.d */ #ifdef ECL_DEFINE_AET_SIZE