Commit Graph

218 Commits

Author SHA1 Message Date
Yuichi Nishiwaki 828606aed5 throw an error when finding invalid argument specifier 2013-10-22 17:44:47 +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 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 86177b7c4e pic_get_args supports optional argument 2013-10-21 13:57:02 +09:00
Yuichi Nishiwaki b02f81760c pic_get_args supports strings 2013-10-21 11:42:21 +09:00
Yuichi Nishiwaki a49675c322 add OP_PUSHCONST 2013-10-21 09:29:56 +09:00
Yuichi Nishiwaki cefa9a9885 handle runtime error 2013-10-20 23:30:01 +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 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 50b9c2bd97 add pair.h 2013-10-20 12:34:57 +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 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 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 d9e47bdd05 add begin syntax 2013-10-17 17:54:28 +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 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 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 4340c23f20 cleanup 2013-10-16 09:30:35 +09:00
Yuichi Nishiwaki a90e124697 change ways of taking care of CI 2013-10-16 09:28:58 +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 22abdae12a add callinfo 2013-10-15 23:29:34 +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 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 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 2afdb54c16 print generated irep 2013-10-15 09:07:19 +09:00
Yuichi Nishiwaki 42dbd5fe98 save some special symbols in pic_state structure 2013-10-14 18:28:52 +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 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 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 c250d3b07f use C malloc instead of pic_alloc 2013-10-13 16:01:40 +09:00
Yuichi Nishiwaki 38858e7a11 replace big VM loop stuff with macros 2013-10-12 18:48:35 +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 643d8be66d first VM impl 2013-10-12 00:16:19 +09:00