Commit Graph

656 Commits

Author SHA1 Message Date
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
Yuichi Nishiwaki cfae6f3c59 add OP_NILP 2013-10-20 03:53:02 +09:00
Yuichi Nishiwaki 78f301794a add OP_CAR/OP_CDR 2013-10-20 03:48:06 +09:00
Yuichi Nishiwaki 9bb3c4f4db suppress warnings around parser/scanner 2013-10-20 03:11:08 +09:00
Yuichi Nishiwaki daac4dd7f3 suppress compiler warnings 2013-10-20 03:05:42 +09:00
Yuichi Nishiwaki 5e96d05fd1 insert OP_POP into sequential operation 2013-10-18 02:29:11 +09:00
Yuichi Nishiwaki 3d523a8081 the first callinfo's argc is 1 2013-10-18 01:30:35 +09:00
Yuichi Nishiwaki a0e2089e56 mark global variables 2013-10-18 00:17:55 +09:00
Yuichi Nishiwaki e7a5784fd7 allocate global variable entry area by malloc and save it into pic_state 2013-10-18 00:15:15 +09:00
Yuichi Nishiwaki c92a672e01 change the stack layout: to hold proc object on the stack when procedure
call is invoked
2013-10-17 23:29:18 +09:00
Yuichi Nishiwaki 1646de5e8d initial port commit 2013-10-17 22:42:47 +09:00
Yuichi Nishiwaki e87f632327 writer writes lists in short form 2013-10-17 22:42:20 +09:00
Yuichi Nishiwaki b58c6d1e8b remove test_object_creation from main.c 2013-10-17 21:00:54 +09:00
Yuichi Nishiwaki 986afa2fc9 add missing preprocessor if statement 2013-10-17 20:55:33 +09:00
Yuichi Nishiwaki 1a6c8a3cca support multi-line input in REPL 2013-10-17 20:48:50 +09:00
Yuichi Nishiwaki 458ac6b9ab support dotted list 2013-10-17 18:14:18 +09:00
Yuichi Nishiwaki 87aae8dd8f refactor port.c 2013-10-17 17:57:27 +09:00
Yuichi Nishiwaki 5671c43a77 do not abort when finding syntax error 2013-10-17 17:57:12 +09:00
Yuichi Nishiwaki d9e47bdd05 add begin syntax 2013-10-17 17:54:28 +09:00
Yuichi Nishiwaki 17f0c928da add readline support 2013-10-17 17:08:33 +09:00
Yuichi Nishiwaki 0ccff2f626 free nested environment in codegen 2013-10-17 14:29:37 +09:00
Yuichi Nishiwaki 7925f2b502 implement direct threading VM 2013-10-17 13:54:48 +09:00
Yuichi Nishiwaki 3ecfe821e2 emit error message when compiling a reference to a closed variable 2013-10-17 13:38:09 +09:00
Yuichi Nishiwaki 840593f5f3 remove noisy debug print 2013-10-16 17:49:16 +09:00
Yuichi Nishiwaki fc152f034a debug printer supports OP_LREF 2013-10-16 17:49:07 +09:00
Yuichi Nishiwaki 6bd4747673 debug printer supports OP_JMP/OP_JMPIF 2013-10-16 17:46:33 +09:00
Yuichi Nishiwaki 27da3d030b add less than(<) operator 2013-10-16 17:43:38 +09:00
Yuichi Nishiwaki 4d4fbeb9aa allow recursive function definition 2013-10-16 17:43:23 +09:00
Yuichi Nishiwaki 6c903db758 if syntax 2013-10-16 17:42:47 +09:00
Yuichi Nishiwaki 87dce75c78 add local variables 2013-10-16 17:20:53 +09:00
Yuichi Nishiwaki 5c8d81e8b5 support closure call 2013-10-16 15:30:52 +09:00
Yuichi Nishiwaki 49e1f54195 fix stack operation bug 2013-10-16 13:24:19 +09:00
Yuichi Nishiwaki 9b7fdb0725 undef object must not appear in the user land 2013-10-16 13:24:08 +09:00
Yuichi Nishiwaki ff646e05dd support boolean values 2013-10-16 13:17:01 +09:00
Yuichi Nishiwaki a6920c192f add compiler option -Wall 2013-10-16 13:15:43 +09:00
Yuichi Nishiwaki f6eddbc6d3 save all ireps into pic_state
in order to decrease the stress GC will get, restore irep structures
under pic_state instead of under each procs and making it collectable object
2013-10-16 11:53:25 +09:00
Yuichi Nishiwaki c593a46a62 add OP_LAMBDA (lambda object creation) 2013-10-16 11:32:30 +09:00
Yuichi Nishiwaki 19abedf746 warn when a closure is applied 2013-10-16 11:28:57 +09:00
Yuichi Nishiwaki b60e4df3d9 add pic_realloc 2013-10-16 11:21:41 +09:00
Yuichi Nishiwaki 40a971230d read signed real numbers 2013-10-16 10:19:16 +09:00
Yuichi Nishiwaki 4340c23f20 cleanup 2013-10-16 09:30:35 +09:00
Yuichi Nishiwaki 728a4cb9d5 [gc] mark ci 2013-10-16 09:29:47 +09:00
Yuichi Nishiwaki 62303ed91e [gc] mark predefined symbols 2013-10-16 09:29:39 +09:00
Yuichi Nishiwaki a90e124697 change ways of taking care of CI 2013-10-16 09:28:58 +09:00
Yuichi Nishiwaki 04896bcd93 [gc] bugfix: do not mark a value out of the stack range 2013-10-16 09:28:13 +09:00
Yuichi Nishiwaki 136977f357 [gc] show freed object counts 2013-10-16 09:22:15 +09:00
Yuichi Nishiwaki c41c5533fe [gc] more debug prints 2013-10-16 09:21:57 +09:00
Yuichi Nishiwaki 1fc4ef18d1 fix gc bug 2013-10-16 09:21:13 +09:00
Yuichi Nishiwaki 36b455d9c2 do not pop sp in pic_get_args; OP_CALL takes care of stack unwinding 2013-10-16 09:19:43 +09:00
Yuichi Nishiwaki 910f370482 [gc] base header size is 1, not 0 2013-10-16 09:17:44 +09:00
Yuichi Nishiwaki 22abdae12a add callinfo 2013-10-15 23:29:34 +09:00
Yuichi Nishiwaki ea6230e90c configurable stack size 2013-10-15 23:28:23 +09:00
Yuichi Nishiwaki f280b0a5ce add some mathematic functions 2013-10-15 23:26:18 +09:00
Yuichi Nishiwaki 7f04cad34d scan real numbers 2013-10-15 23:25:31 +09:00
Yuichi Nishiwaki 0515b8ba2a pic_get_args supports double type (f) 2013-10-15 23:25:07 +09:00
Yuichi Nishiwaki e42eb5acd5 change ways of stack operation (no longer push dummy object at first) 2013-10-15 22:34:20 +09:00
Yuichi Nishiwaki a93c3caabf move pic_env to proc.h 2013-10-15 21:53:45 +09:00
Yuichi Nishiwaki b998c903a3 remove eval.c 2013-10-15 21:52:44 +09:00
Yuichi Nishiwaki d40c8b5921 add cfunc_p flag to pic_proc 2013-10-15 21:52:14 +09:00
Yuichi Nishiwaki a5dcaba970 add support for arithmetic operations 2013-10-15 21:29:07 +09:00
Yuichi Nishiwaki 2d4a5ed1ea add standard functions: write/newline 2013-10-15 21:14:33 +09:00
Yuichi Nishiwaki af9dd45e65 change the type of immediate number value from int to double 2013-10-15 20:05:12 +09:00
Yuichi Nishiwaki 02d52723ac add some FFI functions such as pic_defun and pic_get_args 2013-10-15 19:19:34 +09:00
Yuichi Nishiwaki 8a5ea7d7dc implement OP_CALL 2013-10-15 19:18:33 +09:00
Yuichi Nishiwaki e5ada35d9d directly change pic->sp via PUSH/POP macros 2013-10-15 19:15:51 +09:00
Yuichi Nishiwaki 266e6c6400 change repl prompt 2013-10-15 19:12:33 +09:00
Yuichi Nishiwaki 6a10162c2c add picrin/proc.h 2013-10-15 13:21:40 +09:00
Yuichi Nishiwaki daece7ae67 add object creation debug flag to picconf 2013-10-15 09:14:34 +09:00
Yuichi Nishiwaki 099d40cfb8 print raw read expression in repl 2013-10-15 09:08:10 +09:00
Yuichi Nishiwaki 78303a72e5 include necessary headers when GC_DEBUG 2013-10-15 09:07:55 +09:00
Yuichi Nishiwaki 2afdb54c16 print generated irep 2013-10-15 09:07:19 +09:00
Yuichi Nishiwaki fea6b7f633 push undef to the stack as a first dummy object 2013-10-15 09:02:49 +09:00
Yuichi Nishiwaki 528c2e2c15 bugfix around GC 2013-10-15 08:58:23 +09:00
Yuichi Nishiwaki 6bd38273d2 free arena objects created in main function 2013-10-14 18:29:30 +09:00
Yuichi Nishiwaki 42dbd5fe98 save some special symbols in pic_state structure 2013-10-14 18:28:52 +09:00
Yuichi Nishiwaki 8c73ded2c4 add debug prints at GC 2013-10-14 18:22:14 +09:00
Yuichi Nishiwaki 276e139ec6 fix bugs around GC 2013-10-14 18:21:56 +09:00
Yuichi Nishiwaki ed7a9d5758 fix commit bug introduced in HEAD^^ 2013-10-14 17:36:07 +09:00
Yuichi Nishiwaki 22414b61e8 let the printer output proc objects and unknown values 2013-10-14 17:35:01 +09:00
Yuichi Nishiwaki c706d4f326 sweep objects from base pointer (not from freep) 2013-10-14 17:34:04 +09:00
Yuichi Nishiwaki a7cc9bd69d add missing braek statement 2013-10-14 17:32:24 +09:00
Yuichi Nishiwaki c53bf58e7e move debug prints 2013-10-14 17:07:09 +09:00
Yuichi Nishiwaki daa65bdecf pop value from the stack at the end of VM execution 2013-10-14 17:05:49 +09:00
Yuichi Nishiwaki 298a8e685f replace use of malloc/free with pic_alloc/pic_free 2013-10-14 17:04:59 +09:00
Yuichi Nishiwaki a5db43ba91 add object finalizer 2013-10-13 19:00:39 +09:00
Yuichi Nishiwaki dc2f25ef2a initial GC commit 2013-10-13 19:00:12 +09:00
Yuichi Nishiwaki 2ef277d5bd add arena protection to the VM 2013-10-13 17:29:21 +09:00
Yuichi Nishiwaki 8b859d4dbc define stack operation macros POP and PUSH 2013-10-13 17:27:44 +09:00
Yuichi Nishiwaki f0541e0f6b arena doesn't have to be explicitly initialized 2013-10-13 17:26:17 +09:00
Yuichi Nishiwaki a6f561d66e change the type of argument pic_gc_protect accepts 2013-10-13 17:25:36 +09:00
Yuichi Nishiwaki ee985a31cd add GC arena 2013-10-13 17:02:29 +09:00
Yuichi Nishiwaki 012b387c89 change the semantics of pic_alloc/pic_free 2013-10-13 16:56:30 +09:00
Yuichi Nishiwaki a0556087f9 rename pic_gc_alloc to pic_obj_alloc 2013-10-13 16:55:07 +09:00
Yuichi Nishiwaki 1fb9ac5d03 let pic_proc be a first class object 2013-10-13 16:16:13 +09:00
Yuichi Nishiwaki d92bd71293 force alignment of headers 2013-10-13 16:02:08 +09:00
Yuichi Nishiwaki c250d3b07f use C malloc instead of pic_alloc 2013-10-13 16:01:40 +09:00
Yuichi Nishiwaki e3600a65c9 replace mock allocator with simple k&r malloc 2013-10-13 15:14:15 +09:00
Yuichi Nishiwaki 38858e7a11 replace big VM loop stuff with macros 2013-10-12 18:48:35 +09:00
Yuichi Nishiwaki 3eefa2669f depress compiler warnings 2013-10-12 18:46:41 +09:00
Yuichi Nishiwaki e4be084b0e skip whitespaces in lex 2013-10-12 18:46:11 +09:00
Yuichi Nishiwaki 4cceb73db6 support global variable 2013-10-12 14:40:55 +09:00
Yuichi Nishiwaki 69e927d7bc add pic_raise 2013-10-12 14:40:27 +09:00
Yuichi Nishiwaki b284973035 add #<undef> 2013-10-12 14:40:01 +09:00
Yuichi Nishiwaki 8d23ef666f cleanup 2013-10-12 13:06:02 +09:00
Yuichi Nishiwaki 5f90f49604 remove old VM test code 2013-10-12 13:01:48 +09:00
Yuichi Nishiwaki ee3442210c replace evaluator in repl to the VM 2013-10-12 12:55:05 +09:00
Yuichi Nishiwaki 65c9843d83 add VM codegen 2013-10-12 12:53:54 +09:00
Yuichi Nishiwaki b2fa560bc7 eval accepts int values 2013-10-12 12:48:30 +09:00
Yuichi Nishiwaki 2ee11a367f parse int values 2013-10-12 12:07:28 +09:00
Yuichi Nishiwaki 1a45eab148 store stack base and end 2013-10-12 00:20:53 +09:00
Yuichi Nishiwaki 643d8be66d first VM impl 2013-10-12 00:16:19 +09:00
Yuichi Nishiwaki 03fbd0bdb6 add fixnum 2013-10-12 00:15:46 +09:00
Yuichi Nishiwaki 6b0c1aa668 first eval commit 2013-10-11 17:36:51 +09:00
Yuichi Nishiwaki 25d84c1e8a parser echoing test in main repl 2013-10-11 15:20:53 +09:00
Yuichi Nishiwaki 8533d7b87f initial parser commit 2013-10-11 15:18:37 +09:00
Yuichi Nishiwaki 2a6978a3b9 fix bugs around compilation 2013-10-10 17:54:35 +09:00
Yuichi Nishiwaki bd4f3680ea do object create test before entering main 2013-10-10 17:48:37 +09:00
Yuichi Nishiwaki b640dc08e8 add pic_debug function 2013-10-10 17:48:01 +09:00
Yuichi Nishiwaki 0c382c2bdb add pic_intern_cstr 2013-10-10 17:22:25 +09:00
Yuichi Nishiwaki 0fad63f22a add nil stuff 2013-10-10 17:08:54 +09:00
Yuichi Nishiwaki 9038939bd1 add some pair functions 2013-10-10 17:06:26 +09:00
Yuichi Nishiwaki 177d2c7098 add pic_obj_value function 2013-10-10 17:05:58 +09:00
Yuichi Nishiwaki 97ba95e12f add our own malloc implementation (just a mock for now) 2013-10-10 16:44:51 +09:00
Yuichi Nishiwaki bb4131799d add missing argument for calloc 2013-10-10 16:18:03 +09:00
Yuichi Nishiwaki 25c9fef1d0 add pic_state structure 2013-10-10 16:15:41 +09:00
Yuichi Nishiwaki 9d33e0e079 warn line input overflow 2013-10-09 17:14:48 +09:00
Yuichi Nishiwaki 4cdd8e8b01 add simple repl (just echoing the input) 2013-10-09 17:10:32 +09:00
Yuichi Nishiwaki e1d1a11f00 initial commit 2013-10-09 16:58:35 +09:00