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
00dc02757b
mes: Print backtrace upon exception.
...
* mes/module/mes/catch.mes (display-backtrace,
frame-function): New function.
(%eh): Use them.
2018-10-20 18:24:37 +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
Jan Nieuwenhuizen
ddb74e0a4a
core: Use hash table for symbols.
...
* src/mes.c (mes_symbols): Use hash table for symbols. Update users.
2018-10-18 18:50:09 +02:00
Jan Nieuwenhuizen
8e2a688a8c
core: Use assert before failure exit.
...
* src/mes.c (error): Use assert before failure exit. Helps debugging.
2018-10-19 23:01:59 +02:00
Jan Nieuwenhuizen
7efd949304
core: Add hashq_get_handle, hash, hash_ref, hash_set_x.
...
* src/mes.c (scm_symbol_hashq_table, scm_symbol_record_type,
scm_symbol_module, scm_symbol_buckets, scm_symbol_size): New symbols.
Update users.
* src/hash.c (hash_list_of_char): Rename from hashq_. Respect size,
update callers.
(hashq_, hash_ hash, hashq_get_handle, hash_ref, hash_set_x_,
hash_set_x): New function.
(hashq_ref): Do not return handle. Update callers.
2018-10-18 07:55:28 +02:00
Jan Nieuwenhuizen
67046e1b00
mes: Move pair? to core.
...
* src/lib.c (pair_p): New function. Gains 8% performance on MesCC.
2018-10-18 20:06:10 +02:00
Jan Nieuwenhuizen
5ed45a4e24
mes: Move assoc to core.
...
* mes/mes.c (assoc_string, assoc): New function.
* mes/module/mes/scm.mes (assoc): Remove. Gains 12% performance for
MesCC.
2018-10-19 22:38:19 +02:00
Jan Nieuwenhuizen
4e0e4c83d8
Revert "core: Add gc-debug for stack array."
...
This reverts commit f35084d1dbea889d107824e7596da1701c6b90ad.
2018-10-20 10:58:56 +02:00
Jan Nieuwenhuizen
e032f6c70f
core: Add gc-debug for stack array.
...
* src/gc.c (gc_debug): New function.
2018-10-19 21:23:17 +02:00
Jan Nieuwenhuizen
5826f75c7b
scaffold: Resurrect mini-mes.
...
* src/mini-mes.c: Resurrect.
2018-10-19 20:20:00 +02:00
Jan Nieuwenhuizen
d73df09ab6
core: Use array-based stack.
...
* src/mes.c (STACK_SIZE)[MES_ARRAY_STACK]: New variable.
(g_stack_array): New variable.
(g_stack): Change type to SCM*.
(gc_push_frame)[MES_ARRAY_STACK]: Use g_stack_array, g_stack.
(gc_peek_frame): Likewise.
(gc_pop_frame): Likewise.
* src/gc.c (gc_check): Likewise.
(gc): Likewise.
2017-12-14 07:05:53 +01:00
Jan Nieuwenhuizen
a8ae42ff3c
mes: Resurrect Guile-1.8 support.
...
* module/mes/mes-0.scm: Resurrect Guile-1.8 support.
2018-10-17 09:47:20 +02:00
Jan Nieuwenhuizen
a99f9c6df9
core: expand_variable: Remove weird exceptions: begin, if.
...
* src/mes.c (expand_variable_): Remove weird exceptions: begin, if.
2018-10-16 17:13:04 +02:00
Jan Nieuwenhuizen
b226a175f8
mes: Switch to srfi-9 based on structs.
...
* mes/module/srfi/srfi-9.mes: Swap symlink to srfi-9-struct.mes.
* mes/module/srfi/srfi-9/gnu.mes: Swap symlink to gnu-struct.mes.
* src/module.c (make_module_type): Update to match srfi-9-struct
records. Update users.
* src/hash.c (make_hashq_type): Likewise.
2018-10-15 20:42:10 +02:00
Jan Nieuwenhuizen
4ff9b36f26
mes: srfi-9: Add implementation based on struct.
...
* mes/module/srfi/srfi-9-struct.mes: New file.
* mes/module/srfi/srfi-9-vector.mes: Rename from srfi-9.mes
* mes/module/srfi/srfi-9.mes: Symlink to srfi-9-vector.mes.
* mes/module/srfi/srfi-9/gnu-struct.mes: Add srfi-9-struct
implementation.
* mes/module/srfi/srfi-9/gnu-vector.mes: Rename from gnu.mes.
* mes/module/srfi/srfi-9/gnu.mes: Symlink to gnu-vector.mes.
2018-10-15 16:57:00 +02:00
Jan Nieuwenhuizen
8c0a517edf
core: hashq-table: Refactor to be a record-like struct.
...
* src/hash.c (hash_table_printer): New function.
(make_hashq_type): New function.
* src/module.c (module_printer): Use it.
(make_module_type): New function.
(make_initial_module): Use them.
2018-10-15 15:45:41 +02:00
Jan Nieuwenhuizen
999642052b
mescc: Mes C Library: oputs: New function.
...
* lib/mes/oputc.c: New file.
* lib/libmes.c: Include it.
* include/libmes.h: Declare it.
2018-10-15 15:44:47 +02:00
Jan Nieuwenhuizen
d472c4b6f2
core: Use hashq-table for macros.
...
* src/mes.c (lookup_macro_): Remove.
(macro_ref, get_macro, macro_set_x): New function. Update callers.
2018-10-15 14:13:51 +02:00
Jan Nieuwenhuizen
d552ef7c67
core: Add hashq-table type.
...
src/hash.c: New file.
src/module.c (char_hash, module_hash): Remove.
* src/module.c (make_initial_module): Use hash primitives.
(module_define_x): Likewise.
(module_variable): Likewise.
* build-aux/snarf.sh: Snarf it.
* src/mes.c: Include it.
2018-10-15 13:36:19 +02:00
Jan Nieuwenhuizen
bba17734d8
core: Add boot-module.
...
* src/mes.c (scm_symbol_boot_module): New symbol.
(eval_apply): Handle it.
(mes_symbols): Initialize it.
2018-10-15 10:44:47 +02:00
Jan Nieuwenhuizen
7da67941e2
core: Add module-define!
...
* src/module.c (module_define_x, module_printer): New function.
(make_initial_module): Use them.
* tests/srfi-0.test: Test it.
* src/mes.c (display_m0): Remove. Update callers.
* mes/module/mes/fluids.mes (make-fluid): Rewrite.
* tests/macro.test: Test it.
* mes/module/mes/boot-0.scm.in (module-define!): Remove.
* mes/module/mes/boot-02.scm: Likewise.
* module/mes/misc.scm (pk, warn): New function.
* build-aux/check-mes.sh (tests): Run tests.
2018-10-14 09:10:30 +02:00
Jan Nieuwenhuizen
16934697f7
core: Add module indirection for variable lookup.
...
* src/module.c (module_ref, module_variable): New function.
* src/mes.c: Thoughout: Use them.
(assq_ref_env): Remove.
* mes/module/mes/boot-0.scm.in (defined?): Use module-variable.
* mes/module/mes/boot-00.scm (defined?): Likewise.
* mes/module/mes/boot-01.scm (defined?): Likewise.
* mes/module/mes/boot-02.scm (defined?): Likewise.
* scaffold/boot/53-closure-display.scm: Likewise.
2018-10-14 08:30:18 +02:00
Jan Nieuwenhuizen
79c1fe0466
core: Add module type.
...
* src/module.c: New file.
* build-aux/snarf.sh: Snarf it.
* src/mes.c: Include it.
2018-10-14 08:15:22 +02:00
Jan Nieuwenhuizen
96ca5b4e4b
core: Add cstring_to_symbol.
...
* src/mes.c (make_symbol): Rename from lookup_symbol_. Update
callers.
(cstring_to_symbol): New function.
* src/reader.c (reader_read_identifier_or_number): Use it.
2018-10-14 07:38:51 +02:00
Jan Nieuwenhuizen
0068fe533d
core: Add struct type.
...
* src/struct.c: New file.
* build-aux/snarf.sh: Snarf it.
* src/mes.c: Include it.
2018-10-13 17:34:27 +02:00
Jan Nieuwenhuizen
8df367b3a2
build: factor-out snarfing.
...
* build-aux/snarf.sh: New file.
* build-aux/build-cc.sh: Use it.
* build-aux/build-cc32.sh: Likewise.
* build-aux/build-cc64.sh: Likewise.
* build-aux/build-mes.sh: Likewise.
* build-aux/build-x86_64-mes.sh: Likewise.
* build-aux/snarf.sh: Likewise.
2018-10-15 13:48:50 +02:00
Jan Nieuwenhuizen
2d882ee7bb
core: core:cdr: Support port type.
...
* src/mes.c (cdr_): Support port type.
* mes/module/mes/display.mes (display): Add space between fields.
2018-10-15 12:28:02 +02:00
Jan Nieuwenhuizen
3e5d775b3b
mes: with-fluids: Fix reset.
...
* mes/module/mes/fluids.mes (with-fluids): Fix reset.
* tests/fluids.test (report): Remove Mes failure expectation.
2018-10-15 10:39:02 +02:00
Jan Nieuwenhuizen
0feea9ae52
mescc: Recognize U integer suffix.
...
* module/mescc/compile.scm (cstring->int): Recognize U integer
suffix. Thanks, Peter de Wachter!
2018-10-19 23:31:30 +02:00
Peter De Wachter
34b265df20
mescc: Add INTn_MIN/MAX defines to stdint.h.
...
* include/stdint.h: Add INTn_MIN/MAX defines. Move integere size
defines from limits.h
* include/limits.h: Include it.
2018-10-16 20:40:41 +02:00
Peter De Wachter
b560899d84
mescc: Allow superfluous parentheses in function declarations.
...
E.g.: int (f)();
This is obscure but valid C. It occurs in the csmith headers (thanks
to macro shenanigans).
* module/mescc/compile.scm (fctn-defn:get-name,
fctn-defn:get-statement): Allow superfluous parentheses in function declarations.
2018-10-16 20:40:40 +02:00
Peter De Wachter
ab57acfa01
mescc: Implement unary plus operator.
...
* module/mescc/compile.scm (ast->type, expr->register,
try-expr->number):): Implement unary plus operator.
2018-10-16 20:40:38 +02:00
Peter De Wachter
d96730b892
mescc: Add missing assembly defines.
...
* lib/x86-mes/x86.M1: Add missing assembly defines.
* lib/x86_64-mes/x86_64.M1: Likewise.
2018-10-16 20:40:37 +02:00
Peter De Wachter
2726a984a2
mescc: Delete duplicate assembly defines.
...
* lib/x86-mes/x86.M1: Delete duplicate assembly defines.
* lib/x86_64-mes/x86_64.M1: Likewise.
2018-10-16 20:40:36 +02:00
Peter De Wachter
053309e4dc
mescc: Exit with non-zero exit code when subprocess fails.
...
system* returns the result of waitpid. So, suppose that a subprocess
fails with exit code 1. Then the waitpid return value will be 256.
And exit(256) is equivalent to exit(0).
Modified-by: Jan Nieuwenhuizen <janneke@gnu.org>
* mes/module/mes/posix.mes (status:exit-val): New function.
* module/mescc/mescc.scm (assert-system*): Use it.
2018-10-16 20:40:35 +02:00
Jan Nieuwenhuizen
cc473c1d72
mescc: Oops typo.
...
* module/mescc/M1.scm (hex2:immediate8): Typo.
2018-10-12 09:37:10 +02:00
Jan Nieuwenhuizen
a155a0a9a2
core: Support \xNN in reader. Fixes tcc-boot running on Mes.
...
* src/reader.c (reader_read_string): Support \xNN. Fixes Guix
bootstrap chain; i.e., compilation of gcc-2.95.3 using tcc-boot.
* tests/base.test ("reader: \\x08"): Test it.
* scaffold/tests/17-compare-char.c: Likewise, for mescc.
* build-aux/check-mescc.sh (tests): Run it.
2018-12-13 18:19:43 +01:00
Jan Nieuwenhuizen
3c9274ce2d
build: configure: Make dot optional.
...
* configure: Make dot optional.
2018-11-18 14:30:47 +01:00
Jan Nieuwenhuizen
08f04f5596
build: Oops, remove stray lib/linux/x86_64-mes/crt1.
...
* lib/linux/x86_64-mes/crt1: Remove.
2018-10-11 21:14:14 +02:00
Jan Nieuwenhuizen
33f37f2747
build: x86_64 bootstrap build fixes and workaround.
...
* configure: Substitute @arch@ (WAS: ARCH). Update users.
* configure.sh: Substitute @arch@.
* build-aux/build-mes.sh: Use $GUILE for x86_64 build.
* build-aux/install.sh.in: Install mes.S, mes.x86_64-mes-S too.
Prune *.E, *.out.
2018-10-10 22:16:44 +02:00
Jan Nieuwenhuizen
4ae2a111db
doc: Release update.
2018-10-08 18:14:30 +02:00
Jan Nieuwenhuizen
5277669b04
mescc: Oops, delete wrong line of assembly.
...
* lib/x86-mes/x86.M1 (movzbl_%bx,%ebx): Delete wrong line. Thanks, pdewacht!
2018-10-08 18:14:30 +02:00
Jan Nieuwenhuizen
44cc97a8a5
admin: Release update.
...
* doc/announce/ANNOUNCE-0.18: New file.
* guix/git/mes.scm (mes): Update hash.
2018-10-07 17:07:19 +02:00
Jan Nieuwenhuizen
761cdc65ed
Release 0.18.
...
* configure (VERSION): Update to 0.18.
(main): Likewise.
* configure.sh (VERSION): Likewise.
* guix/git/mes.scm (mes, mes.git): Likewise.
* guix/mescc-tools-boot.patch: New file.
2018-10-04 23:15:25 +02:00
Jan Nieuwenhuizen
bb6d786736
doc: Release update.
...
* BOOTSTRAP: Update.
* HACKING: Update.
* NEWS: Update.
* README: Update.
* doc/mes.texi (Submitting Patches): Fix misquoting, misattribution.
2018-09-05 07:05:08 +02:00
Jan Nieuwenhuizen
9a36cf22d0
mescc: Another attempt at divide.
...
* module/mescc/i386/as.scm (i386:r0/r1): Never be signed. Use div for unsigned.
(i386:r0%r1): Likewise.
* module/mescc/x86_64/as.scm (x86_64:r0/r1): Likewise.
(x86_64:r0%r1): Likewise.
* lib/x86-mes/x86.M1: Add div.
* lib/x86_64-mes/x86_64.M1: Likewise.
2018-10-07 15:15:45 +02:00
Jan Nieuwenhuizen
a8a32a5280
tests: Expect srfi-13 failure, MesCC more resembles Gcc.
...
* tests/srfi-13.test (report): Expect INT-MIN failure for x86.
2018-10-07 14:14:50 +02:00