mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	gh-106581: Add 10 new opcodes by allowing assert(kwnames == NULL) (#106707)
				
					
				
			By turning `assert(kwnames == NULL)` into a macro that is not in the "forbidden" list, many instructions that formerly were skipped because they contained such an assert (but no other mention of `kwnames`) are now supported in Tier 2. This covers 10 instructions in total (all specializations of `CALL` that invoke some C code): - `CALL_NO_KW_TYPE_1` - `CALL_NO_KW_STR_1` - `CALL_NO_KW_TUPLE_1` - `CALL_NO_KW_BUILTIN_O` - `CALL_NO_KW_BUILTIN_FAST` - `CALL_NO_KW_LEN` - `CALL_NO_KW_ISINSTANCE` - `CALL_NO_KW_METHOD_DESCRIPTOR_O` - `CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS` - `CALL_NO_KW_METHOD_DESCRIPTOR_FAST`
This commit is contained in:
		
							parent
							
								
									b2b261ab2a
								
							
						
					
					
						commit
						2b94a05a0e
					
				
					 7 changed files with 385 additions and 34 deletions
				
			
		| 
						 | 
				
			
			@ -2706,6 +2706,9 @@ void Py_LeaveRecursiveCall(void)
 | 
			
		|||
 | 
			
		||||
///////////////////// Experimental UOp Interpreter /////////////////////
 | 
			
		||||
 | 
			
		||||
#undef ASSERT_KWNAMES_IS_NULL
 | 
			
		||||
#define ASSERT_KWNAMES_IS_NULL() (void)0
 | 
			
		||||
 | 
			
		||||
#undef DEOPT_IF
 | 
			
		||||
#define DEOPT_IF(COND, INSTNAME) \
 | 
			
		||||
    if ((COND)) {                \
 | 
			
		||||
| 
						 | 
				
			
			@ -2746,6 +2749,7 @@ _PyUopExecute(_PyExecutorObject *executor, _PyInterpreterFrame *frame, PyObject
 | 
			
		|||
    int opcode;
 | 
			
		||||
    uint64_t operand;
 | 
			
		||||
    int oparg;
 | 
			
		||||
 | 
			
		||||
    for (;;) {
 | 
			
		||||
        opcode = self->trace[pc].opcode;
 | 
			
		||||
        operand = self->trace[pc].operand;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue