mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Cleanup:
- fix bug in Py_MakePendingCalls() with threading - fix return type of do_raise - remove build_slice (same as PySlice_New) - remove code inside #if 0 - remove code inside #ifdef CHECK_STACK - remove code inside #ifdef SUPPORT_OBSOLETE_ACCESS - comment about newimp.py should refer to ni.py
This commit is contained in:
		
							parent
							
								
									554fa49500
								
							
						
					
					
						commit
						1aa14838d2
					
				
					 1 changed files with 10 additions and 222 deletions
				
			
		
							
								
								
									
										224
									
								
								Python/ceval.c
									
										
									
									
									
								
							
							
						
						
									
										224
									
								
								Python/ceval.c
									
										
									
									
									
								
							|  | @ -33,7 +33,6 @@ PERFORMANCE OF THIS SOFTWARE. | |||
| 
 | ||||
| /* XXX TO DO:
 | ||||
|    XXX how to pass arguments to call_trace? | ||||
|    XXX totally get rid of access stuff | ||||
|    XXX speed up searching for keywords by using a dictionary | ||||
|    XXX document it! | ||||
|    */ | ||||
|  | @ -66,7 +65,6 @@ static object *eval_code2 PROTO((codeobject *, | |||
| 				 object **, int, | ||||
| 				 object **, int, | ||||
| 				 object *)); | ||||
| static int do_raise PROTO((object *, object *, object *)); | ||||
| #ifdef LLTRACE | ||||
| static int prtrace PROTO((object *, char *)); | ||||
| #endif | ||||
|  | @ -102,9 +100,6 @@ static int cmp_member PROTO((object *, object *)); | |||
| static object *cmp_outcome PROTO((int, object *, object *)); | ||||
| static int import_from PROTO((object *, object *, object *)); | ||||
| static object *build_class PROTO((object *, object *, object *)); | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| static int access_statement PROTO((object *, object *, frameobject *)); | ||||
| #endif | ||||
| static int exec_statement PROTO((object *, object *, object *)); | ||||
| static object *find_from_args PROTO((frameobject *, int)); | ||||
| 
 | ||||
|  | @ -238,7 +233,7 @@ Py_MakePendingCalls() | |||
| { | ||||
| 	static int busy = 0; | ||||
| #ifdef WITH_THREAD | ||||
| 	if (get_thread_ident() != main_thread) { | ||||
| 	if (main_thread && get_thread_ident() != main_thread) { | ||||
| 		ticker = 0; /* We're not done yet */ | ||||
| 		return 0; | ||||
| 	} | ||||
|  | @ -279,6 +274,8 @@ enum why_code { | |||
| 		WHY_BREAK	/* 'break' statement */ | ||||
| }; | ||||
| 
 | ||||
| static enum why_code do_raise PROTO((object *, object *, object *)); | ||||
| 
 | ||||
| 
 | ||||
| /* Backward compatible interface */ | ||||
| 
 | ||||
|  | @ -333,9 +330,6 @@ eval_code2(co, globals, locals, | |||
| 	register frameobject *f; /* Current frame */ | ||||
| 	register object **fastlocals = NULL; | ||||
| 	object *retval = NULL;	/* Return value */ | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 	int defmode = 0;	/* Default access mode for new variables */ | ||||
| #endif | ||||
| #ifdef LLTRACE | ||||
| 	int lltrace; | ||||
| #endif | ||||
|  | @ -364,11 +358,6 @@ eval_code2(co, globals, locals, | |||
| #define BASIC_PUSH(v)	(*stack_pointer++ = (v)) | ||||
| #define BASIC_POP()	(*--stack_pointer) | ||||
| 
 | ||||
| #if 0 | ||||
| #define CHECK_STACK(n)	(STACK_LEVEL() + (n) < f->f_nvalues || \ | ||||
| 			  (stack_pointer = extend_stack(f, STACK_LEVEL(), n))) | ||||
| #endif | ||||
| 
 | ||||
| #ifdef LLTRACE | ||||
| #define PUSH(v)		(BASIC_PUSH(v), lltrace && prtrace(TOP(), "push")) | ||||
| #define POP()		(lltrace && prtrace(TOP(), "pop"), BASIC_POP()) | ||||
|  | @ -625,13 +614,6 @@ eval_code2(co, globals, locals, | |||
| 		} | ||||
| #endif | ||||
| 
 | ||||
| #ifdef CHECK_STACK | ||||
| 		if (!CHECK_STACK(3)) { | ||||
| 			x = NULL; | ||||
| 			break; | ||||
| 		} | ||||
| #endif | ||||
| 
 | ||||
| 		/* Main switch on opcode */ | ||||
| 		 | ||||
| 		switch (opcode) { | ||||
|  | @ -1060,29 +1042,6 @@ eval_code2(co, globals, locals, | |||
| 				err_setstr(SystemError, "no locals"); | ||||
| 				break; | ||||
| 			} | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			u = dict2lookup(x, w); | ||||
| 			if (u == NULL) { | ||||
| 				if (defmode != 0) { | ||||
| 					if (v != None) | ||||
| 						u = (object *)v->ob_type; | ||||
| 					else | ||||
| 						u = NULL; | ||||
| 					x = newaccessobject(v, x, | ||||
| 							    (typeobject *)u, | ||||
| 							    defmode); | ||||
| 					DECREF(v); | ||||
| 					if (x == NULL) | ||||
| 						break; | ||||
| 					v = x; | ||||
| 				} | ||||
| 			} | ||||
| 			else if (is_accessobject(u)) { | ||||
| 				err = setaccessvalue(u, x, v); | ||||
| 				DECREF(v); | ||||
| 				break; | ||||
| 			} | ||||
| #endif | ||||
| 			err = dict2insert(x, w, v); | ||||
| 			DECREF(v); | ||||
| 			break; | ||||
|  | @ -1093,14 +1052,6 @@ eval_code2(co, globals, locals, | |||
| 				err_setstr(SystemError, "no locals"); | ||||
| 				break; | ||||
| 			} | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			u = dict2lookup(x, w); | ||||
| 			if (u != NULL && is_accessobject(u)) { | ||||
| 				err = setaccessvalue(u, x, | ||||
| 						     (object *)NULL); | ||||
| 				break; | ||||
| 			} | ||||
| #endif | ||||
| 			if ((err = dict2remove(x, w)) != 0) | ||||
| 				err_setval(NameError, w); | ||||
| 			break; | ||||
|  | @ -1121,12 +1072,6 @@ eval_code2(co, globals, locals, | |||
| 				why = WHY_EXCEPTION; | ||||
| 			} | ||||
| 			else { | ||||
| #ifdef CHECK_STACK | ||||
| 				if (!CHECK_STACK(oparg)) { | ||||
| 					x = NULL; | ||||
| 					break; | ||||
| 				} | ||||
| #endif | ||||
| 				for (; --oparg >= 0; ) { | ||||
| 					w = GETTUPLEITEM(v, oparg); | ||||
| 					INCREF(w); | ||||
|  | @ -1148,12 +1093,6 @@ eval_code2(co, globals, locals, | |||
| 				why = WHY_EXCEPTION; | ||||
| 			} | ||||
| 			else { | ||||
| #ifdef CHECK_STACK | ||||
| 				if (!CHECK_STACK(oparg)) { | ||||
| 					x = NULL; | ||||
| 					break; | ||||
| 				} | ||||
| #endif | ||||
| 				for (; --oparg >= 0; ) { | ||||
| 					w = getlistitem(v, oparg); | ||||
| 					INCREF(w); | ||||
|  | @ -1182,33 +1121,12 @@ eval_code2(co, globals, locals, | |||
| 		case STORE_GLOBAL: | ||||
| 			w = GETNAMEV(oparg); | ||||
| 			v = POP(); | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			if (f->f_locals != NULL) { | ||||
| 				u = dict2lookup(f->f_locals, w); | ||||
| 				if (u != NULL && is_accessobject(u)) { | ||||
| 					err = setaccessvalue(u, f->f_globals, | ||||
| 							     v); | ||||
| 					DECREF(v); | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| #endif | ||||
| 			err = dict2insert(f->f_globals, w, v); | ||||
| 			DECREF(v); | ||||
| 			break; | ||||
| 		 | ||||
| 		case DELETE_GLOBAL: | ||||
| 			w = GETNAMEV(oparg); | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			if (f->f_locals != NULL) { | ||||
| 				u = dict2lookup(f->f_locals, w); | ||||
| 				if (u != NULL && is_accessobject(u)) { | ||||
| 					err = setaccessvalue(u, f->f_globals, | ||||
| 							     (object *)NULL); | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| #endif | ||||
| 			if ((err = dict2remove(f->f_globals, w)) != 0) | ||||
| 				err_setval(NameError, w); | ||||
| 			break; | ||||
|  | @ -1238,14 +1156,6 @@ eval_code2(co, globals, locals, | |||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			if (is_accessobject(x)) { | ||||
| 				x = getaccessvalue(x, f->f_globals /* XXX */); | ||||
| 				if (x == NULL) | ||||
| 					break; | ||||
| 			} | ||||
| 			else | ||||
| #endif | ||||
| 			INCREF(x); | ||||
| 			PUSH(x); | ||||
| 			break; | ||||
|  | @ -1261,41 +1171,10 @@ eval_code2(co, globals, locals, | |||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			if (is_accessobject(x)) { | ||||
| 				x = getaccessvalue(x, f->f_globals); | ||||
| 				if (x == NULL) | ||||
| 					break; | ||||
| 			} | ||||
| 			else | ||||
| #endif | ||||
| 			INCREF(x); | ||||
| 			PUSH(x); | ||||
| 			break; | ||||
| 
 | ||||
| #if 0 | ||||
| 		case LOAD_LOCAL: | ||||
| 			w = GETNAMEV(oparg); | ||||
| 			if ((x = f->f_locals) == NULL) { | ||||
| 				err_setstr(SystemError, "no locals"); | ||||
| 				break; | ||||
| 			} | ||||
| 			x = dict2lookup(x, w); | ||||
| 			if (x == NULL) { | ||||
| 				err_setval(NameError, w); | ||||
| 				break; | ||||
| 			} | ||||
| 			if (is_accessobject(x)) { | ||||
| 				x = getaccessvalue(x, f->f_locals); | ||||
| 				if (x == NULL) | ||||
| 					break; | ||||
| 			} | ||||
| 			else | ||||
| 				INCREF(x); | ||||
| 			PUSH(x); | ||||
| 			break; | ||||
| #endif | ||||
| 
 | ||||
| 		case LOAD_FAST: | ||||
| 			x = GETLOCAL(oparg); | ||||
| 			if (x == NULL) { | ||||
|  | @ -1304,14 +1183,6 @@ eval_code2(co, globals, locals, | |||
| 							oparg)); | ||||
| 				break; | ||||
| 			} | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			if (is_accessobject(x)) { | ||||
| 				x = getaccessvalue(x, f->f_locals); | ||||
| 				if (x == NULL) | ||||
| 					break; | ||||
| 			} | ||||
| 			else | ||||
| #endif | ||||
| 			INCREF(x); | ||||
| 			PUSH(x); | ||||
| 			if (x != NULL) continue; | ||||
|  | @ -1319,32 +1190,10 @@ eval_code2(co, globals, locals, | |||
| 
 | ||||
| 		case STORE_FAST: | ||||
| 			v = POP(); | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			w = GETLOCAL(oparg); | ||||
| 			if (w != NULL && is_accessobject(w)) { | ||||
| 				err = setaccessvalue(w, f->f_locals, v); | ||||
| 				DECREF(v); | ||||
| 				break; | ||||
| 			} | ||||
| #endif | ||||
| 			SETLOCAL(oparg, v); | ||||
| 			continue; | ||||
| 
 | ||||
| 		case DELETE_FAST: | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			x = GETLOCAL(oparg); | ||||
| 			if (x == NULL) { | ||||
| 				err_setval(NameError, | ||||
| 					   gettupleitem(co->co_varnames, | ||||
| 							oparg)); | ||||
| 				break; | ||||
| 			} | ||||
| 			if (is_accessobject(x)) { | ||||
| 				err = setaccessvalue(x, f->f_locals, | ||||
| 						     (object *)NULL); | ||||
| 				break; | ||||
| 			} | ||||
| #endif | ||||
| 			SETLOCAL(oparg, NULL); | ||||
| 			continue; | ||||
| 		 | ||||
|  | @ -1447,18 +1296,6 @@ eval_code2(co, globals, locals, | |||
| 			if (err == 0) continue; | ||||
| 			break; | ||||
| 
 | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 		case ACCESS_MODE: | ||||
| 			v = POP(); | ||||
| 			w = GETNAMEV(oparg); | ||||
| 			if (getstringvalue(w)[0] == '*') | ||||
| 				defmode = getintvalue(v); | ||||
| 			else | ||||
| 				err = access_statement(w, v, f); | ||||
| 			DECREF(v); | ||||
| 			break; | ||||
| #endif | ||||
| 		 | ||||
| 		case JUMP_FORWARD: | ||||
| 			JUMPBY(oparg); | ||||
| 			continue; | ||||
|  | @ -1689,7 +1526,7 @@ eval_code2(co, globals, locals, | |||
| 				w = NULL; | ||||
| 			v = POP(); | ||||
| 			u = POP(); | ||||
| 			x = build_slice(u,v,w); | ||||
| 			x = PySlice_New(u, v, w); | ||||
| 			DECREF(u); | ||||
| 			DECREF(v); | ||||
| 			XDECREF(w); | ||||
|  | @ -1867,7 +1704,7 @@ eval_code2(co, globals, locals, | |||
| 
 | ||||
| /* Logic for the raise statement (too complicated for inlining).
 | ||||
|    This *consumes* a reference count to each of its arguments. */ | ||||
| static int | ||||
| static enum why_code | ||||
| do_raise(type, value, tb) | ||||
| 	object *type, *value, *tb; | ||||
| { | ||||
|  | @ -2729,13 +2566,6 @@ slice_index(v, isize, pi) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static object * | ||||
| build_slice(u, v, w) /* u:v:w */ | ||||
| 	object *u, *v, *w; | ||||
| { | ||||
|   return PySlice_New(u,v,w); | ||||
| } | ||||
| 
 | ||||
| static object * | ||||
| apply_slice(u, v, w) /* return u[v:w] */ | ||||
| 	object *u, *v, *w; | ||||
|  | @ -2952,16 +2782,6 @@ import_from(locals, v, name) | |||
| 			if (!is_stringobject(name) || | ||||
| 			    getstringvalue(name)[0] == '_') | ||||
| 				continue; | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| 			if (is_accessobject(value)) { | ||||
| 				value = getaccessvalue(value, (object *)NULL); | ||||
| 				if (value == NULL) { | ||||
| 					err_clear(); | ||||
| 					continue; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| #endif | ||||
| 			INCREF(value); | ||||
| 			err = dict2insert(locals, name, value); | ||||
| 			DECREF(value); | ||||
|  | @ -3028,38 +2848,6 @@ build_class(methods, bases, name) | |||
| 	return newclassobject(bases, methods, name); | ||||
| } | ||||
| 
 | ||||
| #ifdef SUPPORT_OBSOLETE_ACCESS | ||||
| static int | ||||
| access_statement(name, vmode, f) | ||||
| 	object *name; | ||||
| 	object *vmode; | ||||
| 	frameobject *f; | ||||
| { | ||||
| 	int mode = getintvalue(vmode); | ||||
| 	object *value, *ac; | ||||
| 	typeobject *type; | ||||
| 	int ret; | ||||
| 	fast_2_locals(f); | ||||
| 	value = dict2lookup(f->f_locals, name); | ||||
| 	if (value && is_accessobject(value)) { | ||||
| 		err_setstr(AccessError, "can't override access"); | ||||
| 		return -1; | ||||
| 	} | ||||
| 	err_clear(); | ||||
| 	if (value != NULL && value != None) | ||||
| 		type = value->ob_type; | ||||
| 	else | ||||
| 		type = NULL; | ||||
| 	ac = newaccessobject(value, f->f_locals, type, mode); | ||||
| 	if (ac == NULL) | ||||
| 		return -1; | ||||
| 	ret = mappinginsert(f->f_locals, name, ac); | ||||
| 	DECREF(ac); | ||||
| 	locals_2_fast(f, 0); | ||||
| 	return ret; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| static int | ||||
| exec_statement(prog, globals, locals) | ||||
| 	object *prog; | ||||
|  | @ -3128,7 +2916,7 @@ exec_statement(prog, globals, locals) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| /* Hack for newimp.py */ | ||||
| /* Hack for ni.py */ | ||||
| static object * | ||||
| find_from_args(f, nexti) | ||||
| 	frameobject *f; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum