Jan Nieuwenhuizen
b9f40e2653
core: Switch to pointer cells.
...
Run
build-aux/pointer.sh
* src/*.c: Update.
* include/mes/*.h: Update.
2019-11-03 10:34:32 +01:00
Jan Nieuwenhuizen
34826aaab6
core: builtins: MES_MINI.
...
* include/mes/mes.h (g_mini): New global.
* src/mes.c (init): Initialize it with environment variable MES_MINI.
* src/builtins.c (mes_builtins): Register a minimal set of builtins
when g_mini.
2019-11-02 21:32:47 +01:00
Jan Nieuwenhuizen
803b679d15
core: make-vector: Move to core.
...
* src/vector.c (make_vector_): Rename from make_vector__. Add
parameter. Fix double allocation.
(make_vector): Rename from make_vector_. Use arity n. Update users.
2019-11-02 21:32:46 +01:00
Jan Nieuwenhuizen
5e445ce773
core: Prepare for M2-Planet: VALUE/TYPE indirections.
...
Rewrite C-constructs not supported by M2-Planet
VALUE (CAR (foo)) -> SCM a = CAR (foo); VALUE (a)
TYPE (CAR (foo)) -> SCM t = CAR (foo); TYPE (a)
* src/builtins.c (builtin_function): Use VALUE indirections.
(builtin_printer): Likewise.
* src/eval-apply.c (apply_builtin): Likewise.
(get_macro): Likewise.
(expand_variable_): Likewise.
(eval_apply): Likewise.
* src/hash.c (hashq_get_handle): Likewise.
(hashq_ref): Likewise.
(hash_ref): Likewise.
(hash_set_x): Likewise.
(hash_table_printer): Likewise.
* src/math.c (greater_p): Likewise.
(less_p): Likewise.
(is_p): Likewise.
(minus): Likewise.
(plus): Likewise.
(divide): Likewise.
(multiply): Likewise.
(logand): Likewise.
(logior): Likewise.
(logxor): Likewise.
* src/posix.c (current_input_port): Likewise.
(set_current_output_port): Likewise.
* src/reader.c (reader_read_list): Likewise.
(reader_read_character): Likewise.
(reader_read_string): Likewise.
* src/string.c (list_to_cstring): Likewise.
(read_string): Likewise.
2019-11-02 19:13:15 +01:00
Jan Nieuwenhuizen
e83a67a107
core: builtin_p: Prepare for M2-Planet.
...
* src/builtins.c (builtin_p): Prepare for M2-Planet.
2019-11-02 19:13:12 +01:00
Jan Nieuwenhuizen
95902000fc
core: Remove macros from cell creation: make_char .. make_string.
...
* src/gc.c (make_char, make_continuation, make_macro, make_number,
make_ref, make_string0, make_string_port): New function.
(make_string): Move from string.c.
* include/mes/macros.h (MAKE_CHAR, MAKE_CONTINUATION, MAKE_MACRO,
MAKE_NUMBER, MAKE_REF, MAKE_STRING0, MAKE_STRING_PORT): Remove macro.
Update users.
* include/mes/m2.h: Likewise.
2019-11-02 19:13:10 +01:00
Jan Nieuwenhuizen
48c9568386
core: Remove core:make-cell.
...
* src/gc.c (alloc, make_cell, cons): Move from mes.c
* src/mes.c: (make_cell_): Remove.
* src/lib.c (char_to_integer, integer_to_char): New function.
* src/builtins.c (mes_builtins): Add them; remove make_cell_.
* mes/module/mes/type-0.mes (char->integer, integer->char): Remove.
2019-11-02 19:13:10 +01:00
Jan Nieuwenhuizen
585f5cf741
core: Split-out display.c.
...
* src/lib.c (display_helper, display_, display_error_, display_port_,
write_, write_error_, write_port_, fdisplay_): Move to ..
* src/display.c: New file.
* simple.make: Add it.
* src/eval.c (assert_defined): Likewise.
2019-11-02 19:13:09 +01:00
Jan Nieuwenhuizen
1a1a4e4a3a
core: Split-out eval-apply.c.
...
* src/mes.c (check_formals, check_apply, pairlis, set_car_x, set_cdr_x,
set_env_x, call_lambda, make_closure_, make_variable_, macro_get_handle,
get_macro, macro_set_x, push_cc, add_formals, formal_p,
expand_variable_, expand_variable, apply_builtin, eval_apply, apply):
Move to ..
* src/eval-apply.c: New file.
* simple.make: Add it.
* src/eval.c (assert_defined): Likewise.
2019-11-02 19:13:09 +01:00
Jan Nieuwenhuizen
fd02098d52
core: Prepare for M2-Planet: builtins.c.
...
* src/builtins.c: Rewrite C constructs not supported by M2-Planet.
2019-11-02 13:54:00 +01:00
Jan Nieuwenhuizen
b40a98582a
core: Prepare for M2-Planet: mes.c.
...
Rewrite C-constructs not supported by M2-Planet, such as
foo ? bar : baz; -> if (foo) bar; else baz;
static char foo[1024] -> __func_buf = malloc (1024); ... char *foo = __func_buf;
*foo -> foo[0]
foo++ -> foo = foo + 1 TODO: pointer arithmetic
foo += 1; -> foo = foo + 1
for (int foo = ; -> int foo; for (foo=
if (foo) -> if (foo != 0)
if (!foo) -> if (foo == 0)
; -> 0;
// ... -> /* ... */
* src/mes.c: Rewrite C constructs not supported by M2-Planet.
* include/mes/mes.h (__execl_c_argv, __getcwd_buf, __open_boot_buf,
__open_boot_file_name, __setenv_buf, __reader_read_char_buf): Declare
buffers.
(init): Initialize them.
* include/mes/macros.h(__M2_PLANET__): Temporary M2 macros.
2019-11-02 13:54:00 +01:00
Jan Nieuwenhuizen
28edf91357
core: Split-out builtins.c.
...
* src/mes.c make_builtin_type, make_builtin, builtin_name,
builtin_arity, builtin_function, builtin_p, builtin_printer,
init_builtin, mes_builtins): Move to ..
* src/builtins.c: New file.
* build-aux/build-mes.sh (mes_sources): Add it.
* build-aux/snarf.sh: Likewise.
* include/mes/builtins.h: Remove constants.
* include/mes/mes.h: Add prototypes.
* include/mes/constants.h (cell_symbol_test): Rename from cell_test.
* simple.make: New file.
2019-11-02 13:53:24 +01:00