mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	compile.c: inline compiler_use_new_block()
* Inline compiler_use_new_block() function into its only callee, compiler_enter_scope() * Remove unused NEW_BLOCK() macro
This commit is contained in:
		
							parent
							
								
									3902d62c4e
								
							
						
					
					
						commit
						fc6f2efd13
					
				
					 1 changed files with 10 additions and 27 deletions
				
			
		|  | @ -171,7 +171,6 @@ static int compiler_addop(struct compiler *, int); | ||||||
| static int compiler_addop_o(struct compiler *, int, PyObject *, PyObject *); | static int compiler_addop_o(struct compiler *, int, PyObject *, PyObject *); | ||||||
| static int compiler_addop_i(struct compiler *, int, Py_ssize_t); | static int compiler_addop_i(struct compiler *, int, Py_ssize_t); | ||||||
| static int compiler_addop_j(struct compiler *, int, basicblock *, int); | static int compiler_addop_j(struct compiler *, int, basicblock *, int); | ||||||
| static basicblock *compiler_use_new_block(struct compiler *); |  | ||||||
| static int compiler_error(struct compiler *, const char *); | static int compiler_error(struct compiler *, const char *); | ||||||
| static int compiler_nameop(struct compiler *, identifier, expr_context_ty); | static int compiler_nameop(struct compiler *, identifier, expr_context_ty); | ||||||
| 
 | 
 | ||||||
|  | @ -523,6 +522,7 @@ compiler_enter_scope(struct compiler *c, identifier name, | ||||||
|                      int scope_type, void *key, int lineno) |                      int scope_type, void *key, int lineno) | ||||||
| { | { | ||||||
|     struct compiler_unit *u; |     struct compiler_unit *u; | ||||||
|  |     basicblock *block; | ||||||
| 
 | 
 | ||||||
|     u = (struct compiler_unit *)PyObject_Malloc(sizeof( |     u = (struct compiler_unit *)PyObject_Malloc(sizeof( | ||||||
|                                             struct compiler_unit)); |                                             struct compiler_unit)); | ||||||
|  | @ -620,8 +620,11 @@ compiler_enter_scope(struct compiler *c, identifier name, | ||||||
|     c->u = u; |     c->u = u; | ||||||
| 
 | 
 | ||||||
|     c->c_nestlevel++; |     c->c_nestlevel++; | ||||||
|     if (compiler_use_new_block(c) == NULL) | 
 | ||||||
|  |     block = compiler_new_block(c); | ||||||
|  |     if (block == NULL) | ||||||
|         return 0; |         return 0; | ||||||
|  |     c->u->u_curblock = block; | ||||||
| 
 | 
 | ||||||
|     if (u->u_scope_type != COMPILER_SCOPE_MODULE) { |     if (u->u_scope_type != COMPILER_SCOPE_MODULE) { | ||||||
|         if (!compiler_set_qualname(c)) |         if (!compiler_set_qualname(c)) | ||||||
|  | @ -755,16 +758,6 @@ compiler_new_block(struct compiler *c) | ||||||
|     return b; |     return b; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static basicblock * |  | ||||||
| compiler_use_new_block(struct compiler *c) |  | ||||||
| { |  | ||||||
|     basicblock *block = compiler_new_block(c); |  | ||||||
|     if (block == NULL) |  | ||||||
|         return NULL; |  | ||||||
|     c->u->u_curblock = block; |  | ||||||
|     return block; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static basicblock * | static basicblock * | ||||||
| compiler_next_block(struct compiler *c) | compiler_next_block(struct compiler *c) | ||||||
| { | { | ||||||
|  | @ -1208,22 +1201,12 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute) | ||||||
|     return 1; |     return 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* The distinction between NEW_BLOCK and NEXT_BLOCK is subtle.  (I'd
 | /* NEXT_BLOCK() creates an implicit jump from the current block
 | ||||||
|    like to find better names.)  NEW_BLOCK() creates a new block and sets |    to the new block. | ||||||
|    it as the current block.  NEXT_BLOCK() also creates an implicit jump | 
 | ||||||
|    from the current block to the new block. |    The returns inside this macro make it impossible to decref objects | ||||||
|  |    created in the local function. Local objects should use the arena. | ||||||
| */ | */ | ||||||
| 
 |  | ||||||
| /* The returns inside these macros make it impossible to decref objects
 |  | ||||||
|    created in the local function.  Local objects should use the arena. |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #define NEW_BLOCK(C) { \ |  | ||||||
|     if (compiler_use_new_block((C)) == NULL) \ |  | ||||||
|         return 0; \ |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #define NEXT_BLOCK(C) { \ | #define NEXT_BLOCK(C) { \ | ||||||
|     if (compiler_next_block((C)) == NULL) \ |     if (compiler_next_block((C)) == NULL) \ | ||||||
|         return 0; \ |         return 0; \ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Victor Stinner
						Victor Stinner