Jan (janneke) Nieuwenhuizen
7e8c6585a0
core: reader_read_block_comment: Prepare for M2-Planet.
...
* src/reader.c (reader_read_block_comment): Prepare for M2-Planet.
2020-07-16 21:38:21 +02:00
Jan (janneke) Nieuwenhuizen
bd816cf29b
core: reader_eat_whitespace: Prepare for M2-Planet.
...
* src/reader.c (reader_eat_whitespace): Prepare for M2-Planet.
2020-07-16 21:37:41 +02:00
Jan (janneke) Nieuwenhuizen
9cbf29b70a
core: reader_read_sexp_: Prepare for M2-Planet.
...
* src/reader.c (reader_read_sexp_): Prepare for M2-Planet.
2020-07-16 21:36:36 +02:00
Jan (janneke) Nieuwenhuizen
a1eade98c6
core: reader_read_identifier_or_number: Prepare for M2-Planet.
...
* src/reader.c (reader_read_identifier_or_number): Prepare for M2-Planet.
2020-07-16 21:35:50 +02:00
Jan (janneke) Nieuwenhuizen
82213b960e
core: open_output_file: Prepare for M2-Planet.
...
* src/posix.c (open_output_file): Prepare for M2-Planet.
2020-07-16 21:32:39 +02:00
Jan (janneke) Nieuwenhuizen
285d04043f
core: current_input_port: Prepare for M2-Planet.
...
* src/posix.c (current_input_port): Prepare for M2-Planet.
2020-07-16 21:31:51 +02:00
Jan (janneke) Nieuwenhuizen
752c5f7d1b
core: write_byte: Prepare for M2-Planet.
...
* src/posix.c (write_byte): Prepare for M2-Planet.
2020-07-16 21:29:45 +02:00
Jan (janneke) Nieuwenhuizen
2f0796cfb5
core: read_char: Prepare for M2-Planet.
...
* src/posix.c (read_char): Prepare for M2-Planet.
2020-07-16 21:26:24 +02:00
Jan (janneke) Nieuwenhuizen
9c099977a0
core: last_pair: Prepare for M2-Planet.
...
* src/lib.c (last_pair): Prepare for M2-Planet.
2020-07-16 21:25:06 +02:00
Jan (janneke) Nieuwenhuizen
c48b847bf7
core: memq: Prepare for M2-Planet.
...
* src/lib.c (memq): Prepare for M2-Planet.
2020-07-16 21:23:38 +02:00
Jan (janneke) Nieuwenhuizen
9ffe861eaf
core: xassq: Prepare for M2-Planet.
...
* src/lib.c (xassq): Prepare for M2-Planet.
2020-07-16 21:20:17 +02:00
Jan (janneke) Nieuwenhuizen
53e509ecf4
core: hash_cstring: Prepare for M2-Planet.
...
* src/hash.c (hash_cstring): Prepare for M2-Planet.
2020-07-16 21:19:06 +02:00
Jan (janneke) Nieuwenhuizen
5bae8803b2
core: eval_apply: Prepare for M2-Planet.
...
* src/eval-apply.c (eval_apply): Prepare for M2-Planet.
2020-07-16 21:10:27 +02:00
Jan (janneke) Nieuwenhuizen
c2e80904ad
core: apply_builtin: Prepare for M2-Planet.
...
* src/eval-apply.c (apply_builtin): Prepare for M2-Planet.
2020-07-16 20:53:11 +02:00
Jan (janneke) Nieuwenhuizen
065b026bfc
core: formal_p: Prepare for M2-Planet.
...
* src/eval-apply.c (formal_p): Prepare for M2-Planet.
2020-07-16 19:39:34 +02:00
Jan (janneke) Nieuwenhuizen
7a2f85b34b
core: builtin_p: Prepare for M2-Planet.
...
* src/builtins.c (builtin_p): Prepare for M2-Planet.
2020-07-16 19:07:22 +02:00
Jan (janneke) Nieuwenhuizen
6f60795489
core: assoc: Prepare for M2-Planet.
...
* src/mes.c (assoc): Prepare for M2-Planet.
2020-07-16 19:02:44 +02:00
Jan (janneke) Nieuwenhuizen
673ca85c64
core: assq: Prepare for M2-Planet.
...
* src/mes.c (assq): Prepare for M2-Planet.
2020-07-16 19:01:43 +02:00
Jan (janneke) Nieuwenhuizen
4c83a3bc6b
core: eq_p: Prepare for M2-Planet.
...
* src/mes.c (eq_p): Prepare for M2-Planet.
2020-07-16 12:49:52 +02:00
Jan (janneke) Nieuwenhuizen
4297746e72
core: assoc_string: Prepare for M2-Planet.
...
src/mes.c (assoc_string): Prepare for M2-Planet.
2020-07-16 11:29:08 +02:00
Jan (janneke) Nieuwenhuizen
f9a372de13
core: Prepare for pointer cells.
...
* include/mes/cc.h: Prepare for pointer-based cells.
* include/mes/macros.h[POINTER_CELLS]: Alternative set of macros.
* include/mes/mes.h (struct scm)[POINTER_CELLS]: Alternative definition.
* src/gc.c (copy_cell, copy_news): New function.
* include/mes/mes.h: Declare them.
2020-07-14 15:57:49 +02:00
Jan (janneke) Nieuwenhuizen
52c57da02f
core: gc: FRAME_SIZE.
...
* src/gc.c (gc_loop, gc_): Use FRAME_SIZE.
2020-06-22 19:26:55 +02:00
Jan (janneke) Nieuwenhuizen
c6670b46c3
core: gc: Fixes.
...
* src/gc.c (gc_init, gc_up_arena, gc_flip): Change to void function.
Fixes 0 returns.
(make_bytes): Use plain.
(make_string): Add 1 to length, for zero-terminated C strings.
(gc_copy): Use plain bytes length.
(gc_loop): Manually reformat.
2020-06-22 18:00:15 +02:00
Jan (janneke) Nieuwenhuizen
4613b070e4
core: Create symbols dynamically.
...
* include/mes/symbols.h: New file.
* include/mes/mes.hh: Include it.
* include/mes/constants.h: Remove symbol constants.
* src/symbols.c (init_symbols): Create symbols dynamically.
* build-aux/mes-snarf.scm (snarf-symbols): Update.
2020-06-16 15:59:26 +02:00
Jan (janneke) Nieuwenhuizen
94e40691ba
core: Remove CBYTES, CSTRING, NCBYTES macros.
...
* src/gc.c (cell_bytes, news_bytes): New function.
* include/mes/macros.h (CBYTES, CSTRING, NCBYTES): Remove. Update
users.
* include/mes/m2.h: Likewise.
2020-05-19 08:55:41 +02:00
Jan (janneke) Nieuwenhuizen
a25dff6837
core: Prepare for conversion to pointer cells.
...
* src/posix.c (execl_): Prepare for conversion to pointer cells.
2020-05-19 09:11:29 +02:00
Jan (janneke) Nieuwenhuizen
781f4f0e6c
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.
2020-05-18 22:35:12 +02:00
Jan (janneke) Nieuwenhuizen
0f951cac5d
core: Remove macros from cell creation: make_bytes.
...
* src/gc.c (bytes_cells, make_bytes): Move from string.c.
* include/mes/macros.h (MAKE_BYTES0, NAME_SYMBOL): Remove.
* include/mes/m2.h: Likewise.
2020-05-18 21:57:55 +02:00
Jan (janneke) Nieuwenhuizen
7932d4bad7
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.
2020-05-18 00:40:50 +02:00
Jan (janneke) Nieuwenhuizen
e0da734c8b
core: Refactor display.
2020-05-17 23:53:27 +02:00
Jan (janneke) Nieuwenhuizen
f746db72c5
core: Upcase register names.
...
* include/mes/mes.h (R0, R1, R2, R3, M0): Rename from lower case.
Update users.
2020-05-17 22:32:53 +02:00
Jan (janneke) Nieuwenhuizen
cadf047530
core: Split-out symbol.c.
...
* src/mes.c (init_symbol, mes_symbols): Move to ..
* src/symbol.c: New file.
* build-aux/configure-lib.sh (mes_SOURCES): Add it.
* simple.make: Likewise.
* include/mes/mes.h: Declare init_symbols.
2020-05-17 20:50:12 +02:00
Jan (janneke) Nieuwenhuizen
c8bfa1478d
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.
* build-aux/configure-lib.sh (mes_SOURCES): Add it.
* simple.make: Likewise.
2020-05-17 20:42:48 +02:00
Jan (janneke) Nieuwenhuizen
efd9f75ce2
core: eval-apply: Fix formal_p.
...
* src/eval-apply.c (formal_p): Return boolean.
2020-05-31 15:03:10 +02:00
Jan (janneke) Nieuwenhuizen
c4dd954216
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.
* build-aux/configure-lib.sh (mes_SOURCES): Add it.
* simple.make: Likewise.
* src/eval.c (assert_defined): Likewise.
2020-05-17 20:14:08 +02:00
Jan (janneke) Nieuwenhuizen
6a96134eba
core: Use assert_msg.
...
* src/mes.c: Use assert_msg instead of assert.
* src/gc.c: Likewise.
* src/hash.c: Likewise.
* src/lib.c: Likewise.
* src/math.c: Likewise.
* src/module.c: Likewise.
* src/posix.c: Likewise.
* src/reader.c: Likewise.
* src/string.c: Likewise.
* src/struct.c: Likewise.
* src/vector.c: Likewise.
* simple.make (LIB_SOURCES): Add lib/mes/assert_msg.c.
2020-05-17 16:07:04 +02:00
Jan (janneke) Nieuwenhuizen
60929bf40e
core: Prepare for M2-Planet: vector.c.
...
* src/vector.c: Rewrite C constructs not supported by M2-Planet.
2020-04-19 13:40:25 +02:00
Jan (janneke) Nieuwenhuizen
2440143579
core: Prepare for M2-Planet: struct.c.
...
* src/struct.c: Rewrite C constructs not supported by M2-Planet.
2020-04-19 13:39:12 +02:00
Jan (janneke) Nieuwenhuizen
038884ec62
core: Prepare for M2-Planet: string.c.
...
* src/string.c: Rewrite C constructs not supported by M2-Planet.
2020-04-20 19:47:18 +02:00
Jan (janneke) Nieuwenhuizen
b65cb4861e
core: Prepare for M2-Planet: reader.c.
...
* src/reader.c: Rewrite C constructs not supported by M2-Planet.
2020-04-19 13:29:40 +02:00
Jan (janneke) Nieuwenhuizen
188d80ffc4
core: Prepare for M2-Planet: posix.c.
...
* src/posix.c: Rewrite C constructs not supported by M2-Planet.
2020-04-20 19:47:10 +02:00
Jan (janneke) Nieuwenhuizen
988217e232
core: Prepare for M2-Planet: module.c.
...
* src/module.c: Rewrite C constructs not supported by M2-Planet.
2020-04-20 19:47:04 +02:00
Jan (janneke) Nieuwenhuizen
f3f24e4100
core: Prepare for M2-Planet: math.c.
...
* src/math.c: Rewrite C constructs not supported by M2-Planet.
2020-04-20 19:46:55 +02:00
Jan (janneke) Nieuwenhuizen
7bc1d0cf9f
core: Prepare for M2-Planet: lib.c.
...
* src/lib.c: Rewrite C constructs not supported by M2-Planet.
2020-04-19 13:25:32 +02:00
Jan (janneke) Nieuwenhuizen
7d82ad9a85
core: Prepare for M2-Planet: hash.c.
...
* src/hash.c: Rewrite C constructs not supported by M2-Planet.
2020-04-19 13:24:43 +02:00
Jan (janneke) Nieuwenhuizen
948c6ef91d
core: Prepare for M2-Planet: gc.c.
...
* src/gc.c: Rewrite C constructs not supported by M2-Planet.
2020-04-19 13:23:47 +02:00
Jan (janneke) Nieuwenhuizen
3b347433e6
core: Prepare for M2-Planet: builtins.c.
...
* src/builtins.c: Rewrite C constructs not supported by M2-Planet.
2020-04-19 13:21:58 +02:00
Jan (janneke) Nieuwenhuizen
19a4f9df0b
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.
2020-04-19 13:18:09 +02:00
Jan (janneke) Nieuwenhuizen
348e070bac
build: Run indent for M2.
...
* src/gc.c: Indented.
* src/string.c: Likewise.
2020-04-19 11:36:18 +02:00
Jan (janneke) Nieuwenhuizen
94143959af
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/configure-lib.sh (mes_SOURCES): Add it.
* build-aux/snarf.sh: Likewise.
* build-aux/build-mes.sh (mes_sources): Remove. Include
configure-lib.sh
* 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.
2020-04-19 10:49:48 +02:00
Jan (janneke) Nieuwenhuizen
3470e47561
build: simple.make.
...
* simple.make: New file.
* src/posix.c: Make sure to define EOF.
2020-04-22 08:05:37 +02:00
W. J. van der Laan
d7b2e0ab9b
mes: Prevent out-of-bounds access for stack frame 0.
...
* src/lib.c (make_frame): Add a check to prevent reads outside of the
stack when trying to determine the procedure for stack frame 0.
2021-05-02 16:45:32 +02:00
W. J. van der Laan
ce80c24ae4
mes: Make logand work correctly.
...
* src/math.c (logand): Start from -1 instead of 0, so that the bitwise AND-ed
result is the intersection of bit sets instead of always 0.
* tests/math.test ("logand", "logand 3"): Test it.
Co-authored-by: Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
2021-04-21 08:31:37 +02:00
Jan (janneke) Nieuwenhuizen
9a1c50c1cf
mes: Support for gcc-10.
...
Fixes <https://lists.gnu.org/archive/html/bug-mes/2020-07/msg00000.html >.
Reported by Vagrant Cascadian <vagrant@reproducible-builds.org>.
* src/string.c (MAX_STRING): Remove duplicate definition.
2020-10-06 13:14:22 +02:00
Danny Milosavljevic
3b312ca983
core: Fix unreadchar on string port when unreading EOF.
...
* src/posix.c (unreadchar): Fix on string port when unreading EOF.
2020-06-14 22:41:31 +02:00
Jan Nieuwenhuizen
0549ebd0f7
core: Remove MES_PKGDATADIR.
...
* configure: Do not add MES_PKGDATADIR to config.h.
* configure.sh: Likewise.
* simple.sh: Likewise.
* src/mes.c (open_boot): Do not use MES_PKGDATADIR; rely on
MES_PREFIX or cwd.
2019-12-03 21:23:24 +01:00
Jan Nieuwenhuizen
46b73f494b
core: Throw instead of segfault on non-existing input file.
...
Reported by theruran.
* src/posix.c (open_input_file): Call error instead of failing silently.
2019-11-24 23:12:29 +01:00
Jan Nieuwenhuizen
e8626841f3
build: ./pre-inst-env MES_PREFIX fixup.
...
* build-aux/pre-inst-env.in: Set MES_PREFIX to abs_top_srcdir.
* src/mes.c (open_boot): Cater for MES_PREFIX/mes and ${srcdest}.
2019-07-27 09:19:53 +02:00
Jan Nieuwenhuizen
9628f38be3
build: Uniquify config macros.
...
* configure (main): Rename VERSION to MES_VERSION, pkgdatadir to
MES_PKGDATADIR. Update users.
* configure.sh (mes_system): Likewise.
* src/mes.c (mes_symbols): Update.
(open_boot): Update.
* scaffold/cons-mes.c (main): Update.
* simple.sh: Update.
2019-07-26 18:20:32 +02:00
Jan Nieuwenhuizen
78b3c85f15
build: Cater for ARM.
...
* configure: Cater for ARM.
* configure.sh: Likewise
* build-aux/GNUmakefile.in: Likewise.
* build-aux/bootstrap.sh.in: Likewise.
* module/mescc.scm (parse-opts): Likewise.
* src/mes.c (mes_environment): Likewise.
* build-aux/build.sh.in: Likewise.
* build-aux/config.sh Likewise.
* build-aux/install.sh.in: Likewise.
* module/mes/guile.scm: Likewise.
* scripts/mescc.scm.in: Likewise.
* module/mescc/mescc.scm (arch-get): New function.
(arch-get-info): New function.
(arch-get-define): New function.
(arch-get-m1-options): New function.
(arch-get-Architecture): New function.
(mescc:preprocess c->info, E->info, M1->hex2, hex2->elf,
M1->blood-elf, arch-find): Use them.
2019-05-22 17:55:20 +02:00
Jan Nieuwenhuizen
5dc245e739
build: Simplify.
...
core: Make mes src/ c files separate compilation units.
* include/mes/constants.h: New file.
* include/mes/macros.h: New file.
* include/mes/mes.h: New file.
* src/gc.c: Update.
* src/hash.c: Update.
* src/lib.c: Update.
* src/math.c: Update.
* src/mes.c: Update.
* src/module.c: Update.
* src/posix.c: Update.
* src/reader.c: Update.
* src/string.c: Update.
* src/struct.c: Update.
* src/vector.c: Update.
mes: Update datadir.
* src/mes.c (g_datadir): New global.
(open_boot): Rename from read_boot.
(read_boot): New function.
* mes/module/mes/boot-0.scm: Move from boot-0.scm.in
* configure: Update.
* configure.sh: Update.
mescc: Create libraries from separate files.
* .gitignore: Update.
* build-aux/bootstrap-mes.sh: Remove.
* build-aux/bootstrap.sh.in: Remove.
* build-aux/build-guile.sh: Update.
* build-aux/build-mes.sh: Update.
* build-aux/build-scaffold.sh: New file.
* build-aux/build.sh.in: Update.
* build-aux/cc.sh: Update.
* build-aux/check-tcc.sh: Remove.
* build-aux/config.sh.in: New file.
* build-aux/config.sh: Remove.
* build-aux/install.sh.in: Update.
* build-aux/test-boot.sh: New file.
* build-aux/test-c.sh: New file.
* build-aux/test-driver: New file.
* build-aux/test-suite.sh: New file.
* build-aux/trace.sh: Update.
* build-aux/uninstall.sh.in: Update.
* configure: Update.
* configure.sh: Update.
* lib/linux/x86-mes-mescc/crt1.c: Move from lib/linux/x86-mes.
* lib/linux/x86-mes-mescc/mini.c: Likewise.
* lib/linux/x86_64-mes-mescc/crt1.c: Move from lib/linux/x86_64-mes.
* lib/linux/x86_64-mes-mescc/mini.c: Likewise.
* lib/linux/x86-mes-gcc/syscall.c: Rename from mes.c.
* lib/linux/x86-mes-mescc/syscall.c: Likewise.
* lib/linux/x86_64-mes-gcc/syscall.c: Likewise.
* lib/linux/x86_64-mes-mescc/syscall.c: Likewise.
* lib/mes/mes_open.c: Include config.h.
* lib/tests/stdio/70-printf-hello.c: Likewise.
* lib/tests/stdio/70-printf-simple.c: Likewise.
* scaffold/gc-test.sh: New file.
* simple.sh: Update.
2019-06-08 15:36:22 +02:00
Jan Nieuwenhuizen
26e88603d4
mescc: Mes C Library: Use SYSTEM_LIBC [WAS: WITH_GLIBC].
...
Run: sed -i 's,WITH_GLIBC,SYSTEM_LIBC,g' $(git grep -l WITH_GLIBC)
* build-aux/config.sh: Update.
* include/alloca.h: Likewise.
* include/ar.h: Likewise.
* include/argz.h: Likewise.
* include/assert.h: Likewise.
* include/ctype.h: Likewise.
* include/dirent.h: Likewise.
* include/dirstream.h: Likewise.
* include/dlfcn.h: Likewise.
* include/endian.h: Likewise.
* include/errno.h: Likewise.
* include/fcntl.h: Likewise.
* include/features.h: Likewise.
* include/float.h: Likewise.
* include/getopt.h: Likewise.
* include/inttypes.h: Likewise.
* include/libgen.h: Likewise.
* include/limits.h: Likewise.
* include/linux/x86_64/syscall.h: Likewise.
* include/locale.h: Likewise.
* include/math.h: Likewise.
* include/memory.h: Likewise.
* include/mes/lib-mini.h: Likewise.
* include/pwd.h: Likewise.
* include/setjmp.h: Likewise.
* include/signal.h: Likewise.
* include/stdarg.h: Likewise.
* include/stdbool.h: Likewise.
* include/stddef.h: Likewise.
* include/stdint.h: Likewise.
* include/stdio.h: Likewise.
* include/stdlib.h: Likewise.
* include/stdnoreturn.h: Likewise.
* include/string.h: Likewise.
* include/strings.h: Likewise.
* include/sys/cdefs.h: Likewise.
* include/sys/dir.h: Likewise.
* include/sys/file.h: Likewise.
* include/sys/ioctl.h: Likewise.
* include/sys/mman.h: Likewise.
* include/sys/param.h: Likewise.
* include/sys/resource.h: Likewise.
* include/sys/select.h: Likewise.
* include/sys/stat.h: Likewise.
* include/sys/time.h: Likewise.
* include/sys/timeb.h: Likewise.
* include/sys/times.h: Likewise.
* include/sys/types.h: Likewise.
* include/sys/ucontext.h: Likewise.
* include/sys/user.h: Likewise.
* include/sys/wait.h: Likewise.
* include/termio.h: Likewise.
* include/time.h: Likewise.
* include/unistd.h: Likewise.
* lib/libmes.c: Likewise.
* lib/tests/stdio/70-printf-hello.c: Likewise.
* lib/tests/stdio/70-printf-simple.c: Likewise.
* lib/tests/stdio/80-sscanf.c: Likewise.
* lib/tests/stdlib/50-malloc.c: Likewise.
* module/mescc/preprocess.scm: Likewise.
* scaffold/cons-mes.c: Likewise.
* scaffold/lib/stdlib/malloc.c: Likewise.
* scaffold/micro-mes.c: Likewise.
* scaffold/tests/61-array.c: Likewise.
* scaffold/tiny-mes.c: Likewise.
* simple.sh: Likewise.
* src/mes.c: Likewise.
2019-05-29 16:15:12 +02:00
Jan Nieuwenhuizen
a22e5d3acc
mes: Identify 64-bit bug when compiled with MesCC.
...
* src/math.c (divide): Add divide-by-zero error.
(modulo): Likewise.
* module/mes/guile.scm (%compiler): New variable.
* module/mescc/M1.scm (mesc?): New variable.
(hex2:immediate8): Use it to avoid divide-by-zero error.
* HACKING (Bugs): Add it.
2019-05-27 21:33:20 +02:00
Jan Nieuwenhuizen
952b92dfec
mes: Make debug levels 4 and 5 usable.
...
* HACKING: Update debug policy.
* lib/linux/read.c (read): Print read in level 5.
* src/mes.c (eval_apply): Print module in level 6.
(main): Likewise. Remove redundant module printing.
* src/gc.c (gc): Print symbols in level 6.
2019-05-27 21:30:48 +02:00
Jan Nieuwenhuizen
c33d6d00bc
mes: Run build-aux/indent.sh.
...
* src/mes.c: Re-indent.
* src: Likewise.
* include: Likewise.
* lib: Likewise.
* scaffold: Likewise.
2019-05-18 13:27:42 +02:00
Jan Nieuwenhuizen
a46c318bb8
mes: Grand indent: prepare.
...
* build-aux/indent.sh: New file.
* include/mes/builtins.h: Move from src/builtins.h.
* include/fcntl.h: Use // *INDENT-OFF* to prevent indent breakage.
* include/locale.h: Likewise.
* include/signal.h: Likewise.
* include/sys/stat.h: Likewise.
* include/sys/user.h: Likewise.
* lib/linux/x86-mes-gcc/crt0.c: Likewise.
* lib/linux/x86-mes-gcc/crt1.c: Likewise.
* lib/linux/x86-mes-gcc/mes.c: Likewise.
* lib/linux/x86-mes-gcc/mini.c: Likewise.
* lib/linux/x86_64-mes-gcc/crt0.c: Likewise.
* lib/linux/x86_64-mes-gcc/crt1.c: Likewise.
* lib/linux/x86_64-mes-gcc/mes.c: Likewise.
* lib/linux/x86_64-mes-gcc/mini.c: Likewise.
* lib/x86_64-mes-gcc/setjmp.c: Likewise.
* src/mes.c: Likewise.
* src/reader.c: Likewise.
2019-05-13 01:07:32 +02:00
Jan Nieuwenhuizen
e66f16aeb6
mes: Rename strings.c.
...
* src/string.c: Rename from src/strings.c.
* src/mes.c
* build-aux/snarf.sh: Update.
2019-05-14 08:37:05 +02:00
Jan Nieuwenhuizen
8bda737ee4
mescc: Mes C Library: Use mes_open to avoid open trickery.
...
* include/mes/lib.h (mes_open): Declare.
* lib/libmes.c[WITH_GLIBC]: Remove open undefine.
(mes_open)[!WITH_GLIBC]: New function.
* src/mes.c (open_boot): Use mes_open.
* src/posix.c (open_input_file): Likewise.
(open_output_file): Likewise.
2019-05-13 00:40:33 +02:00
Jan Nieuwenhuizen
3ed82d7010
mescc: Mes C Library: Cleanup includes.
...
* include/mes/lib-mini.h: Move from include/libmes-mini.h. Update users.
* include/mes/lib.h: Move from include/libmes.h. Update users.
2019-05-08 00:25:41 +02:00
Jan Nieuwenhuizen
829cc9cca5
mes: m2: Move force-output to Scheme.
...
* mes/module/mes/posix.mes (force-output): New function.
* src/posix.c (force_output): Remove.
* src/mes.c (mes_builtins): Remove adding of force-output.
2019-05-05 13:11:33 +02:00
Jan Nieuwenhuizen
48a0bf181d
build: Replace POSIX, posix_p by WITH_GLIBC, wip_glibc_p.
...
* build-aux/build-mes.sh: Replace POSIX, posix_p by WITH_GLIBC, wip_glibc_p.
* build-aux/build.sh.in: Likewise.
* build-aux/cc.sh (link): Likewise.
* build-aux/config.make.in (with_glibc_p): Likewise.
* build-aux/config.sh (libc): Likewise.
(CPPFLAGS): Likewise.
* build-aux/config.status.in (with_glibc_p): Likewise.
* build-aux/test.sh: Likewise.
* configure (main): Likewise.
* configure.sh (subst): Likewise.
(mes_arch): Likewise.
* include/libmes.h: Likewise.
* include/linux/x86_64/syscall.h: Likewise.
* lib/libmes.c: Likewise.
* lib/tests/stdio/70-printf-hello.c (main): Likewise.
* lib/tests/stdio/70-printf-simple.c (main): Likewise.
* lib/tests/stdio/80-sscanf.c (main): Likewise.
* lib/tests/stdlib/50-malloc.c: Likewise.
* module/mescc/preprocess.scm (c99-input->full-ast): Likewise.
* scaffold/cons-mes.c: Likewise.
* scaffold/lib/stdlib/malloc.c: Likewise.
* scaffold/micro-mes.c: Likewise.
* scaffold/tests/61-array.c (getenv): Likewise.
* scaffold/tiny-mes.c: Likewise.
* src/mes.c: Likewise.
2019-03-23 21:44:00 +01:00
Jan Nieuwenhuizen
757d603e4c
mescc: Mes C Library: Use __ as global internal prefix.
...
* include/libmes-mini.h (g_stdin, g_stdout, g_stderr): Rename to
__stdin, __stdout, __stderr. Update users.
2019-03-02 12:35:18 +01:00
Jan Nieuwenhuizen
5232cfe669
mescc: Mes C Library: Initialize streams in crt1.
...
* lib/linux/x86-mes-gcc/crt1.c: Initialize streams.
* lib/linux/x86-mes/crt1.c: Likewise.
* lib/linux/x86_64-mes-gcc/crt1.c: Likewise.
* lib/linux/x86_64-mes/crt1.c: Likewise.
* src/mes.c (main): Remove initialization of streams.
2019-02-24 12:31:44 +01:00
Jan Nieuwenhuizen
3cc45d7137
core: Rename load_env to read_boot.
...
* src/mes.c (read_boot): Rename from load_env; Update users.
(open_boot): Rename from load_boot; Update users.
2019-02-24 07:44:59 +01:00
Jan Nieuwenhuizen
d3e694c529
core: Initialize g_buf dynamically, add MES_STRING_MAX override.
...
* src/mes.c (g_buf, MAX_STRING): Move from strings.c.
(gc_init_cells): Initialize g_buf dynamically.
(main): Add environment override MES_MAX_STRING for MAX_STRING.
* doc/mes.texi (Environment Variables): Document it.
2019-02-10 06:56:06 +01:00
Jan Nieuwenhuizen
b3dc822bff
core: Resurrect POSIX build. Thanks, gio!
...
* lib/libmes.c[POSIX]: Define and initialize g_stdin, g_stdout and
g_stderr that were moved to crt1 for non-POSIX builds.
* src/mes.c[POSIX]: Remove struct-initialisation exceptions.
2019-02-15 09:28:46 +01:00
Jan Nieuwenhuizen
99ac7b59c4
core: Remove struct definitions for builtins, drop snarfing.
...
After making a change to the list of builtin functions, run
cat src/*.i
and move the into
src/mes.c:mes_builtins ()
and, or also after changing the list of fixed symbols in src/mes.c:mes_symbols (), do
cat src/*.h > src/builtins.h
* build-aux/build.sh.in: Remove snarfing.
* build-aux/bootstrap.sh.in: Likewise.
* mes/module/mes/display.mes (display):
* mes/module/mes/type-0.mes (cell:type-alist): Remove <cell:function>.
(function?, builtin?): Remove.
* src/builtins.h: New file.
* src/mes.c (TFUNCTION): Remove.
(struct function): Remove.
(apply_builtin): Rewrite from call.
(mes_builtins): Rewrite.
(init_builtin, make_builtin_type, make_builtin, builtin_name,
builtin_arity, builtin, builtin_p, builtin_printer): New function.
2019-01-04 09:55:16 +01:00
Jan Nieuwenhuizen
04556c5636
core: Remove struct definitions for cells, drop snarfing for symbols.
...
* src/mes.c (init_symbol): New function.
(mes_symbols): Use it.
(scm_nil, ... scm_test): Remove.
2019-01-04 08:07:48 +01:00
Jan Nieuwenhuizen
8e8e2fd6d3
core: Remove string debugging.
...
* src/strings.c (make_bytes, make_string, string_equal_p,
symbol_to_string, symbol_to_keyword, make_symbol): Remove string
debugging.
2018-12-27 16:48:45 +01:00
Jan Nieuwenhuizen
00289fb651
core: Remove --dump, --load.
...
* mes/module/mes/boot-0.scm.in (tty?): Remove --dump, --load.
* src/mes.c (bload_env): Remove.
* src/reader.c (dump): Remove.
2018-12-27 16:47:56 +01:00
Jan Nieuwenhuizen
750fef8dfb
core: Bump MAX_STRING to 524288
...
* src/strings.c (MAX_STRING): Bump to 524288.
(assert_max_string): New function.
(list_to_cstring, string_append, read_string): Use it.
* src/reader.c (reader_read_string): Use it.
2018-12-15 10:34:57 +01:00
Jan Nieuwenhuizen
1ab054002c
core: Add string-ref.
...
* src/strings.c (string_ref): New function.
* mes/module/mes/scm.mes (string-ref): Remove.
2018-11-16 00:15:50 +01:00
Jan Nieuwenhuizen
6af0b49f09
core: Add string-length.
...
* src/strings.c (string_length): New function.
* mes/module/mes/scm.mes (string-length): Remove.
2018-11-15 23:51:29 +01:00
Jan Nieuwenhuizen
819b32e61c
core: Add string-append.
...
* src/strings.c (string_append): New function.
* mes/module/mes/boot-0.scm.in (string-append): Remove.
* mes/module/mes/boot-03.scm (string-append): Remove.
* scaffold/boot/50-make-string.scm (string-append): Remove.
* scaffold/boot/50-string-append.scm (string-append): Remove.
* scaffold/boot/50-string-join.scm (string-append): Remove.
* scaffold/boot/51-module.scm (string-append): Remove.
* scaffold/boot/52-define-module.scm (string-append): Remove.
* tests/macro.test (string-append): Remove.
* scaffold/boot/17-string-append.scm: Move from 50-string-append.scm.
2018-11-15 23:09:56 +01:00
Jan Nieuwenhuizen
149f2a3e51
core: String as array of bytes.
...
* src/strings.c: New file.
* src/mes.c: Use it. Update users.
2018-11-11 16:25:36 +01:00
Jan Nieuwenhuizen
75655793d4
core: struct_set_: Oops typo.
...
* src/struct.c (struct_set_x_): Oops, remove indirection.
2018-11-14 08:16:58 +01:00
Jan Nieuwenhuizen
d2cba60eb4
core: read_string: Allow for gc.
...
* src/posix.c (read_char): Add optional port parameter.
(read_string): Allow for gc.
2018-11-11 10:17:50 +01:00
Jan Nieuwenhuizen
af328a444a
core: Add delete_file.
...
* src/posix.c (delete_file): New function.
2018-11-11 11:03:03 +01:00
Jan Nieuwenhuizen
35c8408df4
core: Add dup, dup2.
...
* src/posix.c (dup_, dup2_): New function.
2018-11-11 10:18:50 +01:00
Jan Nieuwenhuizen
7c63d3df47
core: Add getcwd.
...
* src/posix.c (getcwd_): New function.
2018-11-11 10:16:19 +01:00
Jan Nieuwenhuizen
7d2e0f1215
core: Support redirection of stderr.
...
* include/libmes-mini.h (g_stderr): New global.
* lib/mes/eputc.c (eputc): Use it.
* lib/mes/eputs.c (eputs): Likewise.
* lib/mes/oputc.c (oputc): Likewise.
* lib/mes/oputs.c (oputs): Likewise.
* src/lib.c (display_error_, write_error_): Likewise.
* src/posix.c (write_byte): Likewise.
* src/mes.c (mes_builtins): Likewise.
(main): Iniitalize g_stderr.
* src/posix.c (current_error_port, set_current_error_port): New
function.
* mes/module/mes/boot-0.scm.in (current-output-port,
current-error-port): Remove.
2018-11-11 10:04:03 +01:00
Jan Nieuwenhuizen
331a0c29e6
core: Assert g_free in alloc.
...
* src/mes.c (alloc): Assert g_free.
2018-11-11 10:01:49 +01:00
Jan Nieuwenhuizen
0e1d98963c
mes: read-string: Take optional port argument.
...
* src/posix.c (read_string): Take optional port argument.
* mes/module/mes/guile.mes (read-string): Remove.
2018-10-21 12:00:00 +02:00
Jan Nieuwenhuizen
d6660a5d83
core: eval_apply: Order gotos according to frequency.
...
* src/mes.c (eval_apply): Order gotos according to frequency.
2018-10-21 08:50:45 +02:00
Jan Nieuwenhuizen
fc78b41a10
Revert "core: eval_apply profile."
...
This reverts commit d61e6be0b18459a8e3c262eab448b428dc81937a.
2018-10-21 08:43:35 +02:00
Jan Nieuwenhuizen
a048a452e5
core: eval_apply profile.
...
* src/mes.c: Poor man's eval_apply profile.
2018-10-21 08:25:07 +02:00
Jan Nieuwenhuizen
9d1d85e041
core: Fix displaying of closure.
...
* src/lib.c (display_helper): Fix displaying of closure.
2018-10-20 20:01:45 +02:00
Jan Nieuwenhuizen
a233287c07
core: Set procedure in stack frame.
...
* src/mes.c (eval_apply): Set procedure in stack frame.
2018-10-20 18:27:13 +02:00
Jan Nieuwenhuizen
c2c361bf1a
core: Implement stack and frame.
...
* src/lib.c (frame_printer make_frame_type, make_frame,
make_stack_type, make_stack, stack_length, stack_ref): New function.
2018-10-20 18:23:20 +02:00
Jan Nieuwenhuizen
094bdac0bd
core: Support time functions.
...
* lib/linux/clock_gettime.c: New file, move from gnu.c.
* lib/linux/gettimeofday.c: New file, move from tcc.c.
* lib/linux/time.c: New file, move from tcc.c.
* lib/linux/libc.c: Include them.
* lib/linux/gnu.c (clock_gettime): Remove.
* lib/linux/tcc.c (time, gettimeofday): Remove.
* include/time.h (CLOCK_PROCESS_CPUTIME_ID): New define.
* src/posix.c (init_time, current_time, gettimeofday_,
seconds_and_nanoseconds_to_long, get_internal_run_time): New function.
* src/mes.c (scm_symbol_internal_time_units_per_second): New symbol.
(main): Call init_time.
2018-10-20 14:18:04 +02:00