Merge branch 'refactor-analyzer4'
This commit is contained in:
		
						commit
						98005c4832
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -521,26 +521,14 @@ gc_mark(pic_state *pic, pic_value v) | |||
| static void | ||||
| gc_mark_global_symbols(pic_state *pic) | ||||
| { | ||||
|   M(sDEFINE); M(sLAMBDA); M(sIF); M(sBEGIN); M(sQUOTE); M(sSETBANG); | ||||
|   M(sQUASIQUOTE); M(sUNQUOTE); M(sUNQUOTE_SPLICING); | ||||
|   M(sSYNTAX_QUOTE); M(sSYNTAX_QUASIQUOTE); M(sSYNTAX_UNQUOTE); | ||||
|   M(sSYNTAX_UNQUOTE_SPLICING); | ||||
|   M(sDEFINE_MACRO); M(sIMPORT); M(sEXPORT); | ||||
|   M(sDEFINE_LIBRARY); | ||||
|   M(sCOND_EXPAND); M(sAND); M(sOR); M(sELSE); M(sLIBRARY); | ||||
|   M(sONLY); M(sRENAME); M(sPREFIX); M(sEXCEPT); | ||||
|   M(sCONS); M(sCAR); M(sCDR); M(sNILP); | ||||
|   M(sSYMBOLP); M(sPAIRP); | ||||
|   M(sADD); M(sSUB); M(sMUL); M(sDIV); M(sMINUS); | ||||
|   M(sEQ); M(sLT); M(sLE); M(sGT); M(sGE); M(sNOT); | ||||
|   M(sQUOTE); M(sQUASIQUOTE); M(sUNQUOTE); M(sUNQUOTE_SPLICING); | ||||
|   M(sSYNTAX_QUOTE); M(sSYNTAX_QUASIQUOTE); M(sSYNTAX_UNQUOTE); M(sSYNTAX_UNQUOTE_SPLICING); | ||||
|   M(sDEFINE_LIBRARY); M(sIMPORT); M(sEXPORT); M(sCOND_EXPAND); | ||||
|   M(sREAD); M(sFILE); | ||||
|   M(sCALL); M(sTAILCALL); M(sCALL_WITH_VALUES); M(sTAILCALL_WITH_VALUES); | ||||
|   M(sGREF); M(sLREF); M(sCREF); M(sRETURN); | ||||
|   M(sCALL); M(sGREF); M(sLREF); M(sCREF); | ||||
| 
 | ||||
|   M(uDEFINE); M(uLAMBDA); M(uIF); M(uBEGIN); M(uQUOTE); M(uSETBANG); | ||||
|   M(uDEFINE_MACRO); M(uIMPORT); M(uEXPORT); | ||||
|   M(uDEFINE_LIBRARY); | ||||
|   M(uCOND_EXPAND); | ||||
|   M(uDEFINE); M(uLAMBDA); M(uIF); M(uBEGIN); M(uQUOTE); M(uSETBANG); M(uDEFINE_MACRO); | ||||
|   M(uDEFINE_LIBRARY); M(uIMPORT); M(uEXPORT); M(uCOND_EXPAND); | ||||
|   M(uCONS); M(uCAR); M(uCDR); M(uNILP); | ||||
|   M(uSYMBOLP); M(uPAIRP); | ||||
|   M(uADD); M(uSUB); M(uMUL); M(uDIV); | ||||
|  |  | |||
|  | @ -95,31 +95,16 @@ struct pic_state { | |||
| 
 | ||||
|   struct pic_lib *lib, *prev_lib; | ||||
| 
 | ||||
|   pic_sym *sDEFINE, *sLAMBDA, *sIF, *sBEGIN, *sQUOTE, *sSETBANG; | ||||
|   pic_sym *sQUASIQUOTE, *sUNQUOTE, *sUNQUOTE_SPLICING; | ||||
|   pic_sym *sSYNTAX_QUOTE, *sSYNTAX_QUASIQUOTE, *sSYNTAX_UNQUOTE; | ||||
|   pic_sym *sSYNTAX_UNQUOTE_SPLICING; | ||||
|   pic_sym *sDEFINE_MACRO, *sIMPORT, *sEXPORT; | ||||
|   pic_sym *sDEFINE_LIBRARY; | ||||
|   pic_sym *sCOND_EXPAND, *sAND, *sOR, *sELSE, *sLIBRARY; | ||||
|   pic_sym *sONLY, *sRENAME, *sPREFIX, *sEXCEPT; | ||||
|   pic_sym *sCONS, *sCAR, *sCDR, *sNILP; | ||||
|   pic_sym *sSYMBOLP, *sPAIRP; | ||||
|   pic_sym *sADD, *sSUB, *sMUL, *sDIV, *sMINUS; | ||||
|   pic_sym *sEQ, *sLT, *sLE, *sGT, *sGE, *sNOT; | ||||
|   pic_sym *sQUOTE, *sQUASIQUOTE, *sUNQUOTE, *sUNQUOTE_SPLICING; | ||||
|   pic_sym *sSYNTAX_QUOTE, *sSYNTAX_QUASIQUOTE, *sSYNTAX_UNQUOTE, *sSYNTAX_UNQUOTE_SPLICING; | ||||
|   pic_sym *sDEFINE_LIBRARY, *sIMPORT, *sEXPORT, *sCOND_EXPAND; | ||||
|   pic_sym *sGREF, *sCREF, *sLREF, *sCALL; | ||||
|   pic_sym *sREAD, *sFILE; | ||||
|   pic_sym *sGREF, *sCREF, *sLREF; | ||||
|   pic_sym *sCALL, *sTAILCALL, *sRETURN; | ||||
|   pic_sym *sCALL_WITH_VALUES, *sTAILCALL_WITH_VALUES; | ||||
| 
 | ||||
|   pic_sym *uDEFINE, *uLAMBDA, *uIF, *uBEGIN, *uQUOTE, *uSETBANG; | ||||
|   pic_sym *uDEFINE_MACRO, *uIMPORT, *uEXPORT; | ||||
|   pic_sym *uDEFINE_LIBRARY; | ||||
|   pic_sym *uCOND_EXPAND; | ||||
|   pic_sym *uCONS, *uCAR, *uCDR, *uNILP; | ||||
|   pic_sym *uSYMBOLP, *uPAIRP; | ||||
|   pic_sym *uADD, *uSUB, *uMUL, *uDIV; | ||||
|   pic_sym *uEQ, *uLT, *uLE, *uGT, *uGE, *uNOT; | ||||
|   pic_sym *uDEFINE, *uLAMBDA, *uIF, *uBEGIN, *uQUOTE, *uSETBANG, *uDEFINE_MACRO; | ||||
|   pic_sym *uDEFINE_LIBRARY, *uIMPORT, *uEXPORT, *uCOND_EXPAND; | ||||
|   pic_sym *uCONS, *uCAR, *uCDR, *uNILP, *uSYMBOLP, *uPAIRP; | ||||
|   pic_sym *uADD, *uSUB, *uMUL, *uDIV, *uEQ, *uLT, *uLE, *uGT, *uGE, *uNOT; | ||||
|   pic_sym *uVALUES, *uCALL_WITH_VALUES; | ||||
| 
 | ||||
|   struct pic_lib *PICRIN_BASE; | ||||
|  |  | |||
|  | @ -128,7 +128,7 @@ | |||
| #endif | ||||
| 
 | ||||
| #ifndef PIC_STACK_SIZE | ||||
| # define PIC_STACK_SIZE 1024 | ||||
| # define PIC_STACK_SIZE 2048 | ||||
| #endif | ||||
| 
 | ||||
| #ifndef PIC_RESCUE_SIZE | ||||
|  |  | |||
|  | @ -284,11 +284,6 @@ pic_open(pic_allocf allocf, void *userdata) | |||
| 
 | ||||
| #define S(slot,name) pic->slot = pic_intern_cstr(pic, name) | ||||
| 
 | ||||
|   S(sDEFINE, "define"); | ||||
|   S(sLAMBDA, "lambda"); | ||||
|   S(sIF, "if"); | ||||
|   S(sBEGIN, "begin"); | ||||
|   S(sSETBANG, "set!"); | ||||
|   S(sQUOTE, "quote"); | ||||
|   S(sQUASIQUOTE, "quasiquote"); | ||||
|   S(sUNQUOTE, "unquote"); | ||||
|  | @ -297,46 +292,16 @@ pic_open(pic_allocf allocf, void *userdata) | |||
|   S(sSYNTAX_QUASIQUOTE, "syntax-quasiquote"); | ||||
|   S(sSYNTAX_UNQUOTE, "syntax-unquote"); | ||||
|   S(sSYNTAX_UNQUOTE_SPLICING, "syntax-unquote-splicing"); | ||||
|   S(sDEFINE_MACRO, "define-macro"); | ||||
|   S(sIMPORT, "import"); | ||||
|   S(sEXPORT, "export"); | ||||
|   S(sDEFINE_LIBRARY, "define-library"); | ||||
|   S(sCOND_EXPAND, "cond-expand"); | ||||
|   S(sAND, "and"); | ||||
|   S(sOR, "or"); | ||||
|   S(sELSE, "else"); | ||||
|   S(sLIBRARY, "library"); | ||||
|   S(sONLY, "only"); | ||||
|   S(sRENAME, "rename"); | ||||
|   S(sPREFIX, "prefix"); | ||||
|   S(sEXCEPT, "except"); | ||||
|   S(sCONS, "cons"); | ||||
|   S(sCAR, "car"); | ||||
|   S(sCDR, "cdr"); | ||||
|   S(sNILP, "null?"); | ||||
|   S(sSYMBOLP, "symbol?"); | ||||
|   S(sPAIRP, "pair?"); | ||||
|   S(sADD, "+"); | ||||
|   S(sSUB, "-"); | ||||
|   S(sMUL, "*"); | ||||
|   S(sDIV, "/"); | ||||
|   S(sMINUS, "minus"); | ||||
|   S(sEQ, "="); | ||||
|   S(sLT, "<"); | ||||
|   S(sLE, "<="); | ||||
|   S(sGT, ">"); | ||||
|   S(sGE, ">="); | ||||
|   S(sNOT, "not"); | ||||
|   S(sREAD, "read"); | ||||
|   S(sFILE, "file"); | ||||
|   S(sCALL, "call"); | ||||
|   S(sTAILCALL, "tail-call"); | ||||
|   S(sGREF, "gref"); | ||||
|   S(sLREF, "lref"); | ||||
|   S(sCREF, "cref"); | ||||
|   S(sRETURN, "return"); | ||||
|   S(sCALL_WITH_VALUES, "call-with-values"); | ||||
|   S(sTAILCALL_WITH_VALUES, "tailcall-with-values"); | ||||
| 
 | ||||
|   pic_gc_arena_restore(pic, ai); | ||||
| 
 | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ pic_intern_cstr(pic_state *pic, const char *cstr) | |||
|   strcpy(copy, cstr); | ||||
|   kh_key(h, it) = copy; | ||||
| 
 | ||||
|   kh_val(h, it) = pic->sDEFINE; /* insert dummy */ | ||||
|   kh_val(h, it) = pic->sQUOTE; /* insert dummy */ | ||||
| 
 | ||||
|   sym = (pic_sym *)pic_obj_alloc(pic, sizeof(pic_sym), PIC_TT_SYMBOL); | ||||
|   sym->cstr = copy; | ||||
|  |  | |||
|  | @ -713,6 +713,7 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value args) | |||
|       pic_value v; | ||||
| 
 | ||||
|       v = pic_false_p(POP()) ? pic_true_value() : pic_false_value(); | ||||
|       (void)POP(); | ||||
|       PUSH(v); | ||||
|       NEXT; | ||||
|     } | ||||
|  | @ -876,6 +877,7 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value args) | |||
|       pic_value a, b; | ||||
|       pic_gc_protect(pic, b = POP()); | ||||
|       pic_gc_protect(pic, a = POP()); | ||||
|       (void)POP(); | ||||
|       PUSH(pic_cons(pic, a, b)); | ||||
|       pic_gc_arena_restore(pic, ai); | ||||
|       NEXT; | ||||
|  | @ -883,32 +885,35 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value args) | |||
|     CASE(OP_CAR) { | ||||
|       pic_value p; | ||||
|       p = POP(); | ||||
|       (void)POP(); | ||||
|       PUSH(pic_car(pic, p)); | ||||
|       NEXT; | ||||
|     } | ||||
|     CASE(OP_CDR) { | ||||
|       pic_value p; | ||||
|       p = POP(); | ||||
|       (void)POP(); | ||||
|       PUSH(pic_cdr(pic, p)); | ||||
|       NEXT; | ||||
|     } | ||||
|     CASE(OP_NILP) { | ||||
|       pic_value p; | ||||
|       p = POP(); | ||||
|       (void)POP(); | ||||
|       PUSH(pic_bool_value(pic_nil_p(p))); | ||||
|       NEXT; | ||||
|     } | ||||
| 
 | ||||
|     CASE(OP_SYMBOLP) { | ||||
|       pic_value p; | ||||
|       p = POP(); | ||||
|       (void)POP(); | ||||
|       PUSH(pic_bool_value(pic_sym_p(p))); | ||||
|       NEXT; | ||||
|     } | ||||
| 
 | ||||
|     CASE(OP_PAIRP) { | ||||
|       pic_value p; | ||||
|       p = POP(); | ||||
|       (void)POP(); | ||||
|       PUSH(pic_bool_value(pic_pair_p(p))); | ||||
|       NEXT; | ||||
|     } | ||||
|  | @ -918,6 +923,7 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value args) | |||
|       pic_value a, b;						\ | ||||
|       b = POP();						\ | ||||
|       a = POP();						\ | ||||
|       (void)POP();                                              \ | ||||
|       if (pic_int_p(a) && pic_int_p(b)) {			\ | ||||
| 	double f = (double)pic_int(a) op (double)pic_int(b);	\ | ||||
| 	if (INT_MIN <= f && f <= INT_MAX && (guard)) {		\ | ||||
|  | @ -947,6 +953,7 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value args) | |||
|       pic_value a, b;						\ | ||||
|       b = POP();						\ | ||||
|       a = POP();						\ | ||||
|       (void)POP();                                              \ | ||||
|       if (pic_int_p(a) && pic_int_p(b)) {			\ | ||||
|         PUSH(pic_int_value(pic_int(a) op pic_int(b)));          \ | ||||
|       }								\ | ||||
|  | @ -971,6 +978,7 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value args) | |||
|     CASE(OP_MINUS) { | ||||
|       pic_value n; | ||||
|       n = POP(); | ||||
|       (void)POP(); | ||||
|       if (pic_int_p(n)) { | ||||
| 	PUSH(pic_int_value(-pic_int(n))); | ||||
|       } | ||||
|  | @ -990,6 +998,7 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value args) | |||
|       pic_value a, b;						\ | ||||
|       b = POP();						\ | ||||
|       a = POP();						\ | ||||
|       (void)POP();                                              \ | ||||
|       if (pic_int_p(a) && pic_int_p(b)) {			\ | ||||
| 	PUSH(pic_bool_value(pic_int(a) op pic_int(b)));		\ | ||||
|       }								\ | ||||
|  | @ -1013,6 +1022,7 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value args) | |||
|       pic_value a, b;						\ | ||||
|       b = POP();						\ | ||||
|       a = POP();						\ | ||||
|       (void)POP();                                              \ | ||||
|       if (pic_int_p(a) && pic_int_p(b)) {			\ | ||||
| 	PUSH(pic_bool_value(pic_int(a) op pic_int(b)));		\ | ||||
|       }								\ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki