Commit Graph

477 Commits

Author SHA1 Message Date
Yuichi Nishiwaki 0d952d3639 add string functions 2013-11-18 01:09:54 +09:00
Yuichi Nishiwaki 6cfbe51c87 pic_get_args: change type of argc 2013-11-18 01:07:51 +09:00
Yuichi Nishiwaki 6ac3055816 change return type of pic_str_new to struct pic_string * 2013-11-18 00:28:42 +09:00
Yuichi Nishiwaki d4188e0969 add error function 2013-11-17 18:16:03 +09:00
Yuichi Nishiwaki 5ffb4eb6c9 add string? 2013-11-17 17:42:52 +09:00
Yuichi Nishiwaki 9526ca789a free as many as possible! 2013-11-17 17:33:28 +09:00
Yuichi Nishiwaki fdc9bfea4e initial exception handling support 2013-11-17 17:25:26 +09:00
Yuichi Nishiwaki 5668ae1b29 [bugfix] local variables should be initialized before copied to env object 2013-11-17 17:24:37 +09:00
Yuichi Nishiwaki 737f916a8c add pic_errorf 2013-11-17 17:23:13 +09:00
Yuichi Nishiwaki 224b08fb92 [bugfix] after save_cont any local variable must not be modified!
If save_cont returns a cont object, a local variable will receive the
object and the machine stack state will have just been changed then.
To avoid that, we need set cont object to the local before the machine
stack is copied.
2013-11-17 17:20:19 +09:00
Yuichi Nishiwaki 38988b7770 add global exception handler stack 2013-11-17 16:02:58 +09:00
Yuichi Nishiwaki c79e08632c when restoring continuation sp and ci must be re-allocated 2013-11-17 15:58:53 +09:00
Yuichi Nishiwaki 5947240614 [bugfix] fix crash on deeply nested lambdas 2013-11-17 13:12:59 +09:00
Yuichi Nishiwaki 14ad038051 wipe reallocated cv_tbl 2013-11-17 13:10:36 +09:00
Yuichi Nishiwaki 242a366cbf check vector index out of range 2013-11-17 02:32:27 +09:00
Yuichi Nishiwaki 1ef3ed91a2 fix for-each compilation bug 2013-11-16 23:32:34 +09:00
Yuichi Nishiwaki a68b470e06 pic_get_args can parse '*' 2013-11-15 22:53:41 +09:00
Yuichi Nishiwaki c57f1bfbe1 define math comp predicates as C functions 2013-11-15 22:51:51 +09:00
Yuichi Nishiwaki e94aaffd34 shrink default arena size! 2013-11-15 19:54:47 +09:00
Yuichi Nishiwaki 9cdca8bc70 implement yy arena gc 2013-11-15 19:40:31 +09:00
Yuichi Nishiwaki 690f66dd76 s/is_marked/gc_is_marked/g 2013-11-15 19:32:01 +09:00
Yuichi Nishiwaki f506eac3dd add pic_obj_alloc_unsafe; preparation for yy_arena 2013-11-15 19:31:17 +09:00
Yuichi Nishiwaki 9662ab30ec add pic_vec_extend_ip (for internal API) 2013-11-15 19:30:25 +09:00
Yuichi Nishiwaki c62505b930 initialize newly allocated vector with falses 2013-11-15 19:29:54 +09:00
Yuichi Nishiwaki 73d9b0dc79 use strndup if possible 2013-11-15 17:08:18 +09:00
Yuichi Nishiwaki 93e5758e4c [bugfix] gc may enter an infinite loop 2013-11-15 16:11:54 +09:00
Yuichi Nishiwaki a2f022df4e implement native version of some primitive functions such as car,crd... 2013-11-15 16:07:03 +09:00
Yuichi Nishiwaki 984588b1b6 add reference count GC for pic_block objects 2013-11-15 11:51:58 +09:00
Yuichi Nishiwaki c22f566c06 arena stash can be statically allocated 2013-11-15 10:54:56 +09:00
Yuichi Nishiwaki 066575fa1c error when apply got non-proc at the first place of arguments 2013-11-14 20:42:14 +09:00
Yuichi Nishiwaki 850290dda3 add some char primitives 2013-11-14 20:41:22 +09:00
Yuichi Nishiwaki 7f35eb7daa support named characters 2013-11-14 19:45:38 +09:00
Yuichi Nishiwaki 6de5bc7550 propagate jmp_bufs (useful when C stack and scheme stack interleave) 2013-11-14 19:26:06 +09:00
Yuichi Nishiwaki e68c69ceb1 support datum comment 2013-11-14 17:31:40 +09:00
Yuichi Nishiwaki 48c5c6b17c add vector-set! 2013-11-14 16:57:07 +09:00
Yuichi Nishiwaki b56b86aae2 [bugfix] variables defined by internal definitions may be referred from
inner environments
2013-11-14 16:52:49 +09:00
Yuichi Nishiwaki b9fce69c61 support internal definitions 2013-11-13 18:08:22 +09:00
Yuichi Nishiwaki 2fb4720e22 [bugfix] (= 1 1.0) doesn't work 2013-11-13 17:40:31 +09:00
Yuichi Nishiwaki 5479e7c6ba [bugfix] atan and log functions doesn't accept single argument 2013-11-13 17:38:54 +09:00
Yuichi Nishiwaki 223e873ff0 accept empty lines in repl 2013-11-13 17:37:05 +09:00
Yuichi Nishiwaki d6c377a33b native support for dynamic-wind 2013-11-11 18:04:21 +09:00
Yuichi Nishiwaki 8c40fc8d9e add square bracket notation 2013-11-11 11:57:01 +09:00
Yuichi Nishiwaki 8b484b69d7 rename fields in struct pic_cont 2013-11-11 10:14:42 +09:00
Yuichi Nishiwaki 4fea9169cc error when argument of apply is not a proper list 2013-11-11 08:01:08 +09:00
Yuichi Nishiwaki 7f3d3ac11b copy stacks to restore a continuation 2013-11-11 07:59:52 +09:00
Yuichi Nishiwaki 96d75b3c06 add apply function 2013-11-10 00:41:59 +09:00
Yuichi Nishiwaki fd3300f9db emit int result in int-int division if possible 2013-11-09 16:32:13 +09:00
Yuichi Nishiwaki 0d2e49c17e cleanup 2013-11-09 15:29:58 +09:00
Yuichi Nishiwaki 9d467e4d14 change some function names in cont.c 2013-11-09 15:25:19 +09:00
Yuichi Nishiwaki 76990d512f suppress warnings 2013-11-09 15:24:58 +09:00
Yuichi Nishiwaki 64ae8bd7b0 initial call/cc support 2013-11-09 14:14:25 +09:00
Yuichi Nishiwaki e373aa7b92 add missing pic_apply_argv definition 2013-11-09 14:13:14 +09:00
Yuichi Nishiwaki 0d28f246de add pic_get_proc 2013-11-09 14:12:59 +09:00
Yuichi Nishiwaki 89eceec7f8 fix a bug that pic_apply faults when cfunc proc is given in DEBUG mode 2013-11-09 14:12:36 +09:00
Yuichi Nishiwaki 125189e25e fix a bug in initial ciend setting 2013-11-09 14:11:54 +09:00
Yuichi Nishiwaki d973f41d84 values of some compound types can reach to expanstion phase 2013-11-09 14:11:19 +09:00
Yuichi Nishiwaki d3ed7bce53 eq? and eqv? return true when the pointers are equal 2013-11-09 13:41:11 +09:00
Yuichi Nishiwaki 62f19e85c5 varg * and / operators 2013-11-07 12:52:59 +09:00
Yuichi Nishiwaki 9d304be02e varg - operator 2013-11-07 12:18:00 +09:00
Yuichi Nishiwaki 84c1156b9d add unary minus operator 2013-11-07 12:17:37 +09:00
Yuichi Nishiwaki ae376b4903 fix broken pic_float_p 2013-11-07 12:17:16 +09:00
Yuichi Nishiwaki b0a4249220 varg + operator 2013-11-06 18:55:06 +09:00
Yuichi Nishiwaki 8a0b8da884 missing pic_eqv_p (when PIC_NAN_BOXING disabled) 2013-11-06 18:54:46 +09:00
Yuichi Nishiwaki fc42c71304 add eqv? and equal? 2013-11-06 16:12:31 +09:00
Yuichi Nishiwaki 27dc840118 eq? predicate supports nan-boxing 2013-11-06 16:06:31 +09:00
Yuichi Nishiwaki ac14a2271b fix a bug in pic_false_value 2013-11-05 21:08:32 +09:00
Yuichi Nishiwaki d9cb5d4eee nan-boxing support 2013-11-05 20:33:24 +09:00
Yuichi Nishiwaki e056586ab9 add pic_init_value macro 2013-11-05 00:42:44 -05:00
Yuichi Nishiwaki 46fccff806 cleanup 2013-11-05 00:30:03 -05:00
Yuichi Nishiwaki 5850699d75 force indirect reference to pic_value vtype 2013-11-04 23:37:08 -05:00
Yuichi Nishiwaki 9bba0353e8 add some bytevector primitives 2013-11-04 22:58:16 -05:00
Yuichi Nishiwaki aebf7f00f7 initial bytevector support 2013-11-04 22:38:23 -05:00
Yuichi Nishiwaki 1675ad9f52 initial char support 2013-11-04 21:37:18 -05:00
Yuichi Nishiwaki 8aca1ebc96 rename pic_code.u.c -> pic_code.u.r 2013-11-04 21:32:09 -05:00
Yuichi Nishiwaki 5bb762b6e3 [bugfix] crash on calling vector-ref 2013-11-04 20:59:43 -05:00
Yuichi Nishiwaki 01a5819706 add vector primitives 2013-11-04 20:55:57 -05:00
Yuichi Nishiwaki fb66791216 do not create pic_env object when not needed 2013-11-04 20:27:44 -05:00
Yuichi Nishiwaki 86458359e3 reduce allocation size when creating pic_env object in OP_CALL 2013-11-04 20:23:06 -05:00
Yuichi Nishiwaki 2dc955aaf5 s/cv_tbl/dirty_flags/g 2013-11-04 19:14:21 -05:00
Yuichi Nishiwaki d0602303e3 s/num_val/valuec/g 2013-11-04 16:07:36 -05:00
Yuichi Nishiwaki f5b98e38f8 [bugfix] allocate pic_env values area for local variables 2013-11-04 15:32:26 -05:00
Yuichi Nishiwaki 76dadc8448 remove toplevel pic_env that is never used 2013-11-04 15:30:11 -05:00
Yuichi Nishiwaki aeff650ccf no need to control arena_index in pic_codegen 2013-11-04 13:18:46 -05:00
Yuichi Nishiwaki 808fe32ac0 add boolean functions 2013-11-03 11:39:13 -05:00
Yuichi Nishiwaki 404ccb7fb1 cleanup 2013-11-01 19:19:51 +09:00
Yuichi Nishiwaki 346b159e7e add some debug prints 2013-11-01 19:02:46 +09:00
Yuichi Nishiwaki 1f0d096ed6 protect return values from gc at the end of VM 2013-11-01 18:56:17 +09:00
Yuichi Nishiwaki 77b6b94e74 gc must mark macros as well 2013-11-01 18:55:44 +09:00
Yuichi Nishiwaki 8007baf011 [bugfix] allocate space to hold closed rest args variable in pic_env 2013-11-01 18:55:23 +09:00
Yuichi Nishiwaki 75667d7649 [bugfix] push nil_value even if ci->argc equals varg proc's argc 2013-11-01 15:09:20 +09:00
Yuichi Nishiwaki 5a7b19b348 save each opcode currently fetched into 'c' 2013-11-01 14:44:26 +09:00
Yuichi Nishiwaki 5e74caa7a5 add some important primitive macros such as cond, and, or, ...etc 2013-10-31 00:31:33 +09:00
Yuichi Nishiwaki 207ec5bd24 add eq? function 2013-10-31 00:29:55 +09:00
Yuichi Nishiwaki 98a41314fe parser returns multiple expressions in a call 2013-10-30 17:06:01 +09:00
Yuichi Nishiwaki 6fcce1cd23 cleanup 2013-10-30 16:43:15 +09:00
Yuichi Nishiwaki b7e55b043f introduce legacy macros 2013-10-30 16:42:44 +09:00
Yuichi Nishiwaki abd5bc9216 fix a bug introded in prev prev commit 2013-10-30 15:40:40 +09:00
Yuichi Nishiwaki 1e4ff3276a add pic_type_repr 2013-10-30 15:37:33 +09:00
Yuichi Nishiwaki d4001a70ae VM works with procs not terminated with OP_STOP 2013-10-30 15:36:28 +09:00
Yuichi Nishiwaki 5be1cd7092 add some comments in codegen_scopes' members 2013-10-30 12:16:45 +09:00
Yuichi Nishiwaki 611b273dcd missed to add src/vector.c 2013-10-30 10:12:04 +09:00
Yuichi Nishiwaki 76ec63d1ca adjust callinfo when OP_STOP 2013-10-30 10:05:47 +09:00
Yuichi Nishiwaki 9bc172bde5 add stack underflow detector 2013-10-30 10:05:21 +09:00
Yuichi Nishiwaki a4d20060e7 compile tail calls into OP_TAILCALL 2013-10-30 10:04:23 +09:00
Yuichi Nishiwaki e4b913cb15 add OP_TAILCALL 2013-10-30 10:03:46 +09:00
Yuichi Nishiwaki 4721f42f5a bugfix: define can take only 1 argument 2013-10-29 22:16:16 +09:00
Yuichi Nishiwaki edd890ae0b support 2-argument if syntax 2013-10-29 22:15:58 +09:00
Yuichi Nishiwaki 073f45666a write function should be print even env objects 2013-10-29 16:44:38 +09:00
Yuichi Nishiwaki a0a8a94abc add gc stress test 2013-10-29 16:40:25 +09:00
Yuichi Nishiwaki 35bbd66812 fix gc bug: ci->env and env-up are nullable 2013-10-29 16:39:57 +09:00
Yuichi Nishiwaki edcd060a8a initial vector support 2013-10-29 15:51:37 +09:00
Yuichi Nishiwaki 49072bf5e4 [bugfix] fix closure issue 2013-10-29 10:16:56 +09:00
Yuichi Nishiwaki 15fdbc9c7d add some symbol primitive functions 2013-10-29 02:49:38 +09:00
Yuichi Nishiwaki 4402497a46 fix a bug related to immediate symbol value 2013-10-29 02:33:49 +09:00
Yuichi Nishiwaki 9424f0b9c0 show codegen error message when compilation failure 2013-10-29 02:33:22 +09:00
Yuichi Nishiwaki 1d9410638d remove unused auxuality data field proc->aux 2013-10-29 02:23:14 +09:00
Yuichi Nishiwaki db38cdc7e0 check sym_pool size when interning symbol 2013-10-29 02:16:26 +09:00
Yuichi Nishiwaki 63b52991da introduce immediate symbol value 2013-10-29 02:11:31 +09:00
Yuichi Nishiwaki a19c59ba87 remove stuff rerated to parser_control from scan.l 2013-10-28 22:55:15 +09:00
Yuichi Nishiwaki 94e1e245ea create picrin objects in parser stage, not in scan stage 2013-10-28 22:49:15 +09:00
Yuichi Nishiwaki 9a20b50fc5 [vm] take care of int overflow 2013-10-28 21:26:39 +09:00
Yuichi Nishiwaki 4fa2bad5fa add pic_apply function (and remove pic_run) 2013-10-28 17:45:13 +09:00
Yuichi Nishiwaki 67c13b841c read line comments 2013-10-28 13:04:24 +09:00
Yuichi Nishiwaki c77b8be011 insert type checks in pic_get_args 2013-10-28 00:40:10 +09:00
Yuichi Nishiwaki 5133e04c39 bugfix in pic_get_args 2013-10-28 00:33:24 +09:00
Yuichi Nishiwaki 90b691be67 add exact/inexact function 2013-10-28 00:33:10 +09:00
Yuichi Nishiwaki 350f4d1abd [bugfix] support 'I' format in pic_get_args 2013-10-28 00:24:51 +09:00
Yuichi Nishiwaki d3df6dcbf2 support exact integer 2013-10-28 00:21:24 +09:00
Yuichi Nishiwaki 63c05209f8 add built-in library 2013-10-27 18:38:55 +09:00
Yuichi Nishiwaki f192c96650 parse-from-file facility 2013-10-27 18:38:41 +09:00
Yuichi Nishiwaki c93cef8c8c do not wrap with a begin read expressions if it is single 2013-10-27 18:14:15 +09:00
Yuichi Nishiwaki f3041b7ebc support rest arguments 2013-10-27 18:13:36 +09:00
Yuichi Nishiwaki 40a2568142 read multiple expressions; read exprs are wrapped in a begin 2013-10-27 17:24:44 +09:00
Yuichi Nishiwaki 14dcb63c33 support `(define (foo . args) . body)` style definition 2013-10-27 02:51:06 +09:00
Yuichi Nishiwaki 870320f3a1 refactor incomplete data parsing 2013-10-27 02:06:59 +09:00
Yuichi Nishiwaki 51253c00b9 add procedure? 2013-10-25 00:37:20 +09:00
Yuichi Nishiwaki c782912212 add pair? 2013-10-25 00:37:08 +09:00
Yuichi Nishiwaki c88f0926a4 fix a bug in valid_formal 2013-10-25 00:35:37 +09:00
Yuichi Nishiwaki 83de938342 add some port predicates 2013-10-24 22:56:04 +09:00
Yuichi Nishiwaki 7bb27295c0 warn global redefinition 2013-10-24 22:29:40 +09:00
Yuichi Nishiwaki 331fdaba4c warn various kinds of syntax errors during codegen 2013-10-24 21:55:07 +09:00
Yuichi Nishiwaki 9cb28f3156 add OP_EQ/OP_LT/OP_LE 2013-10-24 21:10:13 +09:00
Yuichi Nishiwaki 2732a5a4ec inti env->value with undef objects 2013-10-24 20:53:27 +09:00
Yuichi Nishiwaki 411395995c s/env.numcv/env.num_val/g 2013-10-24 03:41:48 +09:00
Yuichi Nishiwaki a926c54be3 warn invalid application 2013-10-24 03:38:29 +09:00
Yuichi Nishiwaki d75b624b4a add OP_LSET and OP_CSET 2013-10-24 03:14:32 +09:00
Yuichi Nishiwaki 337b54dc40 initial closure support 2013-10-24 02:51:02 +09:00
Yuichi Nishiwaki 4b31901bce add OP_CREF 2013-10-24 02:04:49 +09:00
Yuichi Nishiwaki bd851318d1 add pic_env struct 2013-10-24 02:02:07 +09:00
Yuichi Nishiwaki f854e225c8 test implementation for closed variable reference 2013-10-24 00:33:37 +09:00
Yuichi Nishiwaki ec0f0d3572 add pic_calloc 2013-10-24 00:32:03 +09:00
Yuichi Nishiwaki 0fd1bbeae9 throw wrong number of arguments error for user defined lambda call 2013-10-24 00:09:40 +09:00
Yuichi Nishiwaki 2ec7f381d0 cleanup codegen.c 2013-10-23 17:26:02 +09:00
Yuichi Nishiwaki 79ee6f6ae4 introduce codegen_state structure 2013-10-23 17:25:39 +09:00
Yuichi Nishiwaki 035de0016b evaluate arguments in normal (lexical) order 2013-10-23 15:55:42 +09:00
Yuichi Nishiwaki d12ed0a139 rename pic_scope -> codegen_scope 2013-10-23 15:52:14 +09:00
Yuichi Nishiwaki 947ddc45c8 bugfix: lambda must use new_scope to gen body code 2013-10-23 15:46:18 +09:00
Yuichi Nishiwaki cc025626d5 use start state to parse strings 2013-10-23 13:44:45 +09:00
Yuichi Nishiwaki dd7958c3d6 reader supports quasiquote abbrev 2013-10-23 12:39:48 +09:00
Yuichi Nishiwaki f01ac50dd2 add set-car!/set-cdr! 2013-10-23 12:01:06 +09:00
Yuichi Nishiwaki 5f05fed38f add missing extended identifier characters 2013-10-23 12:00:53 +09:00
Yuichi Nishiwaki f31ddb36a2 reentrant scanner 2013-10-23 03:45:57 +09:00
Yuichi Nishiwaki bb0bb0e186 reentrant parser (but not for scanner) 2013-10-23 03:13:10 +09:00
Yuichi Nishiwaki dd3adf30e6 use xhash to manage scopes during codegin 2013-10-22 22:22:35 +09:00
Yuichi Nishiwaki 76cba3fad2 add some number-theoretic division functions 2013-10-22 18:29:55 +09:00
Yuichi Nishiwaki 828606aed5 throw an error when finding invalid argument specifier 2013-10-22 17:44:47 +09:00
Yuichi Nishiwaki 779199d571 add many many number primitive functions 2013-10-22 17:24:07 +09:00
Yuichi Nishiwaki d696339577 [bugfix] pic_get_args should ignore optional args when i > argc 2013-10-22 17:23:21 +09:00
Yuichi Nishiwaki b45d7d9592 add eof-object type 2013-10-22 16:02:20 +09:00
Yuichi Nishiwaki 176d167de8 add some file open functions 2013-10-22 15:44:03 +09:00
Yuichi Nishiwaki 6245ec7e05 finalize port objects when collected 2013-10-22 15:40:36 +09:00
Yuichi Nishiwaki d2e09fa2c7 add file related functions 2013-10-22 15:16:35 +09:00
Yuichi Nishiwaki 0c1babb6c5 add pic_reverse 2013-10-22 00:19:43 +09:00
Yuichi Nishiwaki 114d6b708b since pic_string is a first-class value, move it to value.h 2013-10-21 17:38:05 +09:00
Yuichi Nishiwaki f5154625ba add aux object field to proc object 2013-10-21 17:35:14 +09:00
Yuichi Nishiwaki 72a6e90d83 exit functions take an optional argument 2013-10-21 14:13:08 +09:00
Yuichi Nishiwaki 86177b7c4e pic_get_args supports optional argument 2013-10-21 13:57:02 +09:00
Yuichi Nishiwaki 6c8dd50ab8 add exit and emergency-exit 2013-10-21 12:08:46 +09:00
Yuichi Nishiwaki db1f977600 add pic_list_p 2013-10-21 12:03:35 +09:00
Yuichi Nishiwaki 15c4361381 return #f if get-environment-variable refers undefined env-var 2013-10-21 12:03:25 +09:00
Yuichi Nishiwaki adab797391 add system.c 2013-10-21 11:51:02 +09:00
Yuichi Nishiwaki 7dbb2c6de4 cleanup 2013-10-21 11:44:23 +09:00
Yuichi Nishiwaki b02f81760c pic_get_args supports strings 2013-10-21 11:42:21 +09:00
Yuichi Nishiwaki ba78a00d5c take care of escaped characters in string 2013-10-21 11:12:34 +09:00
Yuichi Nishiwaki 8f4788ca27 read strings 2013-10-21 10:48:03 +09:00
Yuichi Nishiwaki a49675c322 add OP_PUSHCONST 2013-10-21 09:29:56 +09:00
Yuichi Nishiwaki 5e43fe58fe add string type 2013-10-21 08:48:55 +09:00
Yuichi Nishiwaki cefa9a9885 handle runtime error 2013-10-20 23:30:01 +09:00
Yuichi Nishiwaki d57d8ff3c0 place main.c under etc/ 2013-10-20 18:44:26 +09:00
Yuichi Nishiwaki 05eb62cc4d do not abort when meet a compilation error 2013-10-20 18:17:12 +09:00
Yuichi Nishiwaki 4f8aa03b24 clarify the meanings of error functions 2013-10-20 17:41:48 +09:00
Yuichi Nishiwaki 12e2f10869 add error.c file 2013-10-20 17:26:18 +09:00
Yuichi Nishiwaki 444fc7c750 split codegen and vm 2013-10-20 17:06:47 +09:00
Yuichi Nishiwaki 510b84702e eq? compares symbol's ptr 2013-10-20 14:07:27 +09:00
Yuichi Nishiwaki 7322271d65 intern symbols using hash table 2013-10-20 14:05:48 +09:00
Yuichi Nishiwaki bde09e063a add pic_acons function 2013-10-20 14:04:39 +09:00
Yuichi Nishiwaki 40c996bd03 fix confusion of GC_DEBUG and VM_DEBUG 2013-10-20 13:07:14 +09:00
Yuichi Nishiwaki 6d8d7bb8bd exit repl with ^D 2013-10-20 12:57:15 +09:00
Yuichi Nishiwaki 50b9c2bd97 add pair.h 2013-10-20 12:34:57 +09:00
Yuichi Nishiwaki 6faaa5261c add time functions 2013-10-20 12:04:15 +09:00