remove pic_defun_vm
This commit is contained in:
		
							parent
							
								
									c9245bbe84
								
							
						
					
					
						commit
						65ade266d1
					
				|  | @ -186,13 +186,11 @@ pic_bool_boolean_eq_p(pic_state *pic) | ||||||
| void | void | ||||||
| pic_init_bool(pic_state *pic) | pic_init_bool(pic_state *pic) | ||||||
| { | { | ||||||
|   void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t); |  | ||||||
| 
 |  | ||||||
|   pic_defun(pic, "eq?", pic_bool_eq_p); |   pic_defun(pic, "eq?", pic_bool_eq_p); | ||||||
|   pic_defun(pic, "eqv?", pic_bool_eqv_p); |   pic_defun(pic, "eqv?", pic_bool_eqv_p); | ||||||
|   pic_defun(pic, "equal?", pic_bool_equal_p); |   pic_defun(pic, "equal?", pic_bool_equal_p); | ||||||
| 
 | 
 | ||||||
|   pic_defun_vm(pic, "not", pic->uNOT, pic_bool_not); |   pic_defun(pic, "not", pic_bool_not); | ||||||
| 
 | 
 | ||||||
|   pic_defun(pic, "boolean?", pic_bool_boolean_p); |   pic_defun(pic, "boolean?", pic_bool_boolean_p); | ||||||
|   pic_defun(pic, "boolean=?", pic_bool_boolean_eq_p); |   pic_defun(pic, "boolean=?", pic_bool_boolean_eq_p); | ||||||
|  |  | ||||||
|  | @ -304,12 +304,10 @@ pic_cont_call_with_values(pic_state *pic) | ||||||
| void | void | ||||||
| pic_init_cont(pic_state *pic) | pic_init_cont(pic_state *pic) | ||||||
| { | { | ||||||
|   void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t); |  | ||||||
| 
 |  | ||||||
|   pic_defun(pic, "call-with-current-continuation", pic_cont_callcc); |   pic_defun(pic, "call-with-current-continuation", pic_cont_callcc); | ||||||
|   pic_defun(pic, "call/cc", pic_cont_callcc); |   pic_defun(pic, "call/cc", pic_cont_callcc); | ||||||
|   pic_defun(pic, "dynamic-wind", pic_cont_dynamic_wind); |   pic_defun(pic, "dynamic-wind", pic_cont_dynamic_wind); | ||||||
| 
 | 
 | ||||||
|   pic_defun_vm(pic, "values", pic->uVALUES, pic_cont_values); |   pic_defun(pic, "values", pic_cont_values); | ||||||
|   pic_defun_vm(pic, "call-with-values", pic->uCALL_WITH_VALUES, pic_cont_call_with_values); |   pic_defun(pic, "call-with-values", pic_cont_call_with_values); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -801,8 +801,6 @@ pic_number_sqrt(pic_state *pic) | ||||||
| void | void | ||||||
| pic_init_number(pic_state *pic) | pic_init_number(pic_state *pic) | ||||||
| { | { | ||||||
|   void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t); |  | ||||||
| 
 |  | ||||||
|   size_t ai = pic_gc_arena_preserve(pic); |   size_t ai = pic_gc_arena_preserve(pic); | ||||||
| 
 | 
 | ||||||
|   pic_defun(pic, "number?", pic_number_real_p); |   pic_defun(pic, "number?", pic_number_real_p); | ||||||
|  | @ -816,17 +814,17 @@ pic_init_number(pic_state *pic) | ||||||
|   pic_defun(pic, "inexact?", pic_number_inexact_p); |   pic_defun(pic, "inexact?", pic_number_inexact_p); | ||||||
|   pic_gc_arena_restore(pic, ai); |   pic_gc_arena_restore(pic, ai); | ||||||
| 
 | 
 | ||||||
|   pic_defun_vm(pic, "=", pic->uEQ, pic_number_eq); |   pic_defun(pic, "=", pic_number_eq); | ||||||
|   pic_defun_vm(pic, "<", pic->uLT, pic_number_lt); |   pic_defun(pic, "<", pic_number_lt); | ||||||
|   pic_defun_vm(pic, ">", pic->uGT, pic_number_gt); |   pic_defun(pic, ">", pic_number_gt); | ||||||
|   pic_defun_vm(pic, "<=", pic->uLE, pic_number_le); |   pic_defun(pic, "<=", pic_number_le); | ||||||
|   pic_defun_vm(pic, ">=", pic->uGE, pic_number_ge); |   pic_defun(pic, ">=", pic_number_ge); | ||||||
|   pic_gc_arena_restore(pic, ai); |   pic_gc_arena_restore(pic, ai); | ||||||
| 
 | 
 | ||||||
|   pic_defun_vm(pic, "+", pic->uADD, pic_number_add); |   pic_defun(pic, "+", pic_number_add); | ||||||
|   pic_defun_vm(pic, "-", pic->uSUB, pic_number_sub); |   pic_defun(pic, "-", pic_number_sub); | ||||||
|   pic_defun_vm(pic, "*", pic->uMUL, pic_number_mul); |   pic_defun(pic, "*", pic_number_mul); | ||||||
|   pic_defun_vm(pic, "/", pic->uDIV, pic_number_div); |   pic_defun(pic, "/", pic_number_div); | ||||||
|   pic_gc_arena_restore(pic, ai); |   pic_gc_arena_restore(pic, ai); | ||||||
| 
 | 
 | ||||||
|   pic_defun(pic, "abs", pic_number_abs); |   pic_defun(pic, "abs", pic_number_abs); | ||||||
|  |  | ||||||
|  | @ -760,13 +760,11 @@ pic_pair_assoc(pic_state *pic) | ||||||
| void | void | ||||||
| pic_init_pair(pic_state *pic) | pic_init_pair(pic_state *pic) | ||||||
| { | { | ||||||
|   void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t); |   pic_defun(pic, "pair?", pic_pair_pair_p); | ||||||
| 
 |   pic_defun(pic, "cons", pic_pair_cons); | ||||||
|   pic_defun_vm(pic, "pair?", pic->uPAIRP, pic_pair_pair_p); |   pic_defun(pic, "car", pic_pair_car); | ||||||
|   pic_defun_vm(pic, "cons", pic->uCONS, pic_pair_cons); |   pic_defun(pic, "cdr", pic_pair_cdr); | ||||||
|   pic_defun_vm(pic, "car", pic->uCAR, pic_pair_car); |   pic_defun(pic, "null?", pic_pair_null_p); | ||||||
|   pic_defun_vm(pic, "cdr", pic->uCDR, pic_pair_cdr); |  | ||||||
|   pic_defun_vm(pic, "null?", pic->uNILP, pic_pair_null_p); |  | ||||||
| 
 | 
 | ||||||
|   pic_defun(pic, "set-car!", pic_pair_set_car); |   pic_defun(pic, "set-car!", pic_pair_set_car); | ||||||
|   pic_defun(pic, "set-cdr!", pic_pair_set_cdr); |   pic_defun(pic, "set-cdr!", pic_pair_set_cdr); | ||||||
|  |  | ||||||
|  | @ -115,6 +115,9 @@ pic_features(pic_state *pic) | ||||||
| #define define_builtin_syntax(uid, name)                                \ | #define define_builtin_syntax(uid, name)                                \ | ||||||
|   pic_define_syntactic_keyword_(pic, pic->lib->env, pic_intern_cstr(pic, name), uid) |   pic_define_syntactic_keyword_(pic, pic->lib->env, pic_intern_cstr(pic, name), uid) | ||||||
| 
 | 
 | ||||||
|  | #define VM(uid, name)                                                   \ | ||||||
|  |   pic_define_syntactic_keyword_(pic, pic->lib->env, pic_intern_cstr(pic, name), uid) | ||||||
|  | 
 | ||||||
| static void | static void | ||||||
| pic_init_core(pic_state *pic) | pic_init_core(pic_state *pic) | ||||||
| { | { | ||||||
|  | @ -135,6 +138,21 @@ pic_init_core(pic_state *pic) | ||||||
| 
 | 
 | ||||||
|     pic_defun(pic, "features", pic_features); |     pic_defun(pic, "features", pic_features); | ||||||
| 
 | 
 | ||||||
|  |     VM(pic->uCONS, "cons"); | ||||||
|  |     VM(pic->uCAR, "car"); | ||||||
|  |     VM(pic->uCDR, "cdr"); | ||||||
|  |     VM(pic->uNILP, "null?"); | ||||||
|  |     VM(pic->uSYMBOLP, "symbol?"); | ||||||
|  |     VM(pic->uPAIRP, "pair?"); | ||||||
|  |     VM(pic->uNOT, "not"); | ||||||
|  |     VM(pic->uADD, "+"); | ||||||
|  |     VM(pic->uSUB, "-"); | ||||||
|  |     VM(pic->uMUL, "*"); | ||||||
|  |     VM(pic->uDIV, "/"); | ||||||
|  |     VM(pic->uEQ, "="); | ||||||
|  |     VM(pic->uLT, "<"); | ||||||
|  |     VM(pic->uLE, "<="); | ||||||
|  | 
 | ||||||
|     pic_init_undef(pic); DONE; |     pic_init_undef(pic); DONE; | ||||||
|     pic_init_bool(pic); DONE; |     pic_init_bool(pic); DONE; | ||||||
|     pic_init_pair(pic); DONE; |     pic_init_pair(pic); DONE; | ||||||
|  |  | ||||||
|  | @ -99,9 +99,7 @@ pic_symbol_string_to_symbol(pic_state *pic) | ||||||
| void | void | ||||||
| pic_init_symbol(pic_state *pic) | pic_init_symbol(pic_state *pic) | ||||||
| { | { | ||||||
|   void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t); |   pic_defun(pic, "symbol?", pic_symbol_symbol_p); | ||||||
| 
 |  | ||||||
|   pic_defun_vm(pic, "symbol?", pic->uSYMBOLP, pic_symbol_symbol_p); |  | ||||||
| 
 | 
 | ||||||
|   pic_defun(pic, "symbol->string", pic_symbol_symbol_to_string); |   pic_defun(pic, "symbol->string", pic_symbol_symbol_to_string); | ||||||
|   pic_defun(pic, "string->symbol", pic_symbol_string_to_symbol); |   pic_defun(pic, "string->symbol", pic_symbol_string_to_symbol); | ||||||
|  |  | ||||||
|  | @ -1134,23 +1134,6 @@ pic_define_syntactic_keyword(pic_state *pic, struct pic_env *env, pic_sym *sym, | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void |  | ||||||
| pic_defun_vm(pic_state *pic, const char *name, pic_sym *uid, pic_func_t func) |  | ||||||
| { |  | ||||||
|   struct pic_proc *proc; |  | ||||||
|   pic_sym *sym; |  | ||||||
| 
 |  | ||||||
|   proc = pic_make_proc(pic, func); |  | ||||||
| 
 |  | ||||||
|   sym = pic_intern_cstr(pic, name); |  | ||||||
| 
 |  | ||||||
|   pic_put_variable(pic, pic->lib->env, pic_obj_value(sym), uid); |  | ||||||
| 
 |  | ||||||
|   pic_dict_set(pic, pic->globals, uid, pic_obj_value(proc)); |  | ||||||
| 
 |  | ||||||
|   pic_export(pic, sym); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void | void | ||||||
| pic_define_(pic_state *pic, const char *name, pic_value val) | pic_define_(pic_state *pic, const char *name, pic_value val) | ||||||
| { | { | ||||||
|  | @ -1161,7 +1144,9 @@ pic_define_(pic_state *pic, const char *name, pic_value val) | ||||||
|   if ((uid = pic_find_variable(pic, pic->lib->env, pic_obj_value(sym))) == NULL) { |   if ((uid = pic_find_variable(pic, pic->lib->env, pic_obj_value(sym))) == NULL) { | ||||||
|     uid = pic_add_variable(pic, pic->lib->env, pic_obj_value(sym)); |     uid = pic_add_variable(pic, pic->lib->env, pic_obj_value(sym)); | ||||||
|   } else { |   } else { | ||||||
|     pic_warnf(pic, "redefining global"); |     if (pic_dict_has(pic, pic->globals, uid)) { | ||||||
|  |       pic_warnf(pic, "redefining variable: ~s", pic_obj_value(uid)); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   pic_dict_set(pic, pic->globals, uid, val); |   pic_dict_set(pic, pic->globals, uid, val); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki