Commit Graph

399 Commits

Author SHA1 Message Date
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