diff --git a/include/mes/builtins.h b/include/mes/builtins.h index 503af128..9a40f1fa 100644 --- a/include/mes/builtins.h +++ b/include/mes/builtins.h @@ -102,6 +102,7 @@ struct scm *logxor (struct scm *x); struct scm *ash (struct scm *n, struct scm *count); /* src/module.c */ struct scm *module_define_x (struct scm *module, struct scm *name, struct scm *value); +struct scm *initial_module (); /* src/posix.c */ struct scm *abort_ (); struct scm *exit_ (struct scm *x); diff --git a/include/mes/symbols.h b/include/mes/symbols.h index ec185bdc..08b9f6c7 100644 --- a/include/mes/symbols.h +++ b/include/mes/symbols.h @@ -86,7 +86,6 @@ struct scm *cell_symbol_portable_macro_expand; struct scm *cell_symbol_sc_expander_alist; struct scm *cell_symbol_call_with_values; struct scm *cell_symbol_call_with_current_continuation; -struct scm *cell_symbol_boot_module; struct scm *cell_symbol_current_module; struct scm *cell_symbol_primitive_load; struct scm *cell_symbol_car; @@ -137,14 +136,14 @@ struct scm *cell_type_broken_heart; struct scm *cell_symbol_program; struct scm *cell_symbol_test; -// CONSTANT SYMBOL_MAX 114 -#define SYMBOL_MAX 114 +// CONSTANT SYMBOL_MAX 113 +#define SYMBOL_MAX 113 // CONSTANT CELL_UNSPECIFIED 7 #define CELL_UNSPECIFIED 7 -// CONSTANT CELL_SYMBOL_RECORD_TYPE 82 -#define CELL_SYMBOL_RECORD_TYPE 82 +// CONSTANT CELL_SYMBOL_RECORD_TYPE 81 +#define CELL_SYMBOL_RECORD_TYPE 81 #endif /* __MES_SYMBOLS_H */ diff --git a/mes/module/mes/fluids.mes b/mes/module/mes/fluids.mes index 5fe3f187..ca36d31c 100644 --- a/mes/module/mes/fluids.mes +++ b/mes/module/mes/fluids.mes @@ -28,7 +28,7 @@ ((lambda (fluid) `(begin (module-define! - (boot-module) + (initial-module) ',fluid ((lambda (v) (lambda ( . rest) diff --git a/src/builtins.c b/src/builtins.c index 680c7f17..3823a5a7 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -212,6 +212,7 @@ mes_builtins (struct scm *a) /*:((internal)) */ a = init_builtin (builtin_type, "ash", 2, &ash, a); /* src/module.c */ a = init_builtin (builtin_type, "module-define!", 3, &module_define_x, a); + a = init_builtin (builtin_type, "initial-module", 0, &initial_module, a); /* src/posix.c */ a = init_builtin (builtin_type, "abort", 0, &abort_, a); a = init_builtin (builtin_type, "exit", 1, &exit_, a); diff --git a/src/eval-apply.c b/src/eval-apply.c index 03e5529c..eb2531f4 100644 --- a/src/eval-apply.c +++ b/src/eval-apply.c @@ -260,7 +260,6 @@ expand_variable_ (struct scm *x, struct scm *formals, int top_p) /*:((int else if (a == cell_symbol_quote) return cell_unspecified; else if (a->type == TSYMBOL - && a != cell_symbol_boot_module && a != cell_symbol_current_module && a != cell_symbol_primitive_load && formal_p (x->car, formals) == 0) @@ -508,11 +507,6 @@ apply: R1 = R0; goto vm_return; } - if (c == cell_symbol_boot_module) - { - R1 = M0; - goto vm_return; - } } else if (t == TPAIR) { @@ -682,8 +676,6 @@ eval: } else if (t == TSYMBOL) { - if (R1 == cell_symbol_boot_module) - goto vm_return; if (R1 == cell_symbol_current_module) goto vm_return; if (R1 == cell_symbol_begin) diff --git a/src/gc.c b/src/gc.c index b886445c..4f733b4c 100644 --- a/src/gc.c +++ b/src/gc.c @@ -731,6 +731,7 @@ gc_dump_state () gc_dump_register ("R1", R1); gc_dump_register ("R2", R2); gc_dump_register ("R3", R3); + gc_dump_register ("M0", M0); gc_dump_register ("g_symbols", g_symbols); gc_dump_register ("g_symbol_max", g_symbol_max); gc_dump_register ("g_macros", g_macros); diff --git a/src/module.c b/src/module.c index ac328369..e3fe2d2b 100644 --- a/src/module.c +++ b/src/module.c @@ -33,6 +33,12 @@ make_initial_module (struct scm *a) /*:((internal)) */ return module; } +struct scm * +initial_module () +{ + return M0; +} + struct scm * module_define_x (struct scm *module, struct scm *name, struct scm *value) { diff --git a/src/symbol.c b/src/symbol.c index 157274cd..488b2a7a 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -122,7 +122,6 @@ init_symbols_ () /*:((internal)) */ cell_symbol_sc_expander_alist = init_symbol (g_symbol, TSYMBOL, "*sc-expander-alist*"); cell_symbol_call_with_values = init_symbol (g_symbol, TSYMBOL, "call-with-values"); cell_symbol_call_with_current_continuation = init_symbol (g_symbol, TSYMBOL, "call-with-current-continuation"); - cell_symbol_boot_module = init_symbol (g_symbol, TSYMBOL, "boot-module"); cell_symbol_current_module = init_symbol (g_symbol, TSYMBOL, "current-module"); cell_symbol_primitive_load = init_symbol (g_symbol, TSYMBOL, "primitive-load"); cell_symbol_car = init_symbol (g_symbol, TSYMBOL, "car"); @@ -192,7 +191,6 @@ init_symbols () /*:((internal)) */ struct scm *a = cell_nil; a = acons (cell_symbol_call_with_values, cell_symbol_call_with_values, a); - a = acons (cell_symbol_boot_module, cell_symbol_boot_module, a); a = acons (cell_symbol_current_module, cell_symbol_current_module, a); a = acons (cell_symbol_mes_version, make_string0 (MES_VERSION), a); diff --git a/tests/macro.test b/tests/macro.test index a1eb4ee9..a809cd82 100755 --- a/tests/macro.test +++ b/tests/macro.test @@ -69,7 +69,7 @@ exec ${MES-mes} --no-auto-compile -L ${0%/*} -L module -C module -e '(tests macr 'begin (list 'module-define! - (list 'boot-module) + (list 'initial-module) (list 'quote fluid) (list (lambda (v)