mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	bpo-38140: Make dict and weakref offsets opaque for C heap types (#16076)
* Make dict and weakref offsets opaque for C heap types * Add news
This commit is contained in:
		
							parent
							
								
									079931d122
								
							
						
					
					
						commit
						3368f3c6ae
					
				
					 8 changed files with 188 additions and 8 deletions
				
			
		
							
								
								
									
										9
									
								
								Python/Python-ast.c
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										9
									
								
								Python/Python-ast.c
									
										
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
 | 
			
		||||
#include "Python.h"
 | 
			
		||||
#include "Python-ast.h"
 | 
			
		||||
#include "structmember.h"
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    int initialized;
 | 
			
		||||
| 
						 | 
				
			
			@ -1216,6 +1217,11 @@ ast_type_reduce(PyObject *self, PyObject *unused)
 | 
			
		|||
    return Py_BuildValue("O()", Py_TYPE(self));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static PyMemberDef ast_type_members[] = {
 | 
			
		||||
    {"__dictoffset__", T_PYSSIZET, offsetof(AST_object, dict), READONLY},
 | 
			
		||||
    {NULL}  /* Sentinel */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static PyMethodDef ast_type_methods[] = {
 | 
			
		||||
    {"__reduce__", ast_type_reduce, METH_NOARGS, NULL},
 | 
			
		||||
    {NULL}
 | 
			
		||||
| 
						 | 
				
			
			@ -1232,6 +1238,7 @@ static PyType_Slot AST_type_slots[] = {
 | 
			
		|||
    {Py_tp_setattro, PyObject_GenericSetAttr},
 | 
			
		||||
    {Py_tp_traverse, ast_traverse},
 | 
			
		||||
    {Py_tp_clear, ast_clear},
 | 
			
		||||
    {Py_tp_members, ast_type_members},
 | 
			
		||||
    {Py_tp_methods, ast_type_methods},
 | 
			
		||||
    {Py_tp_getset, ast_type_getsets},
 | 
			
		||||
    {Py_tp_init, ast_type_init},
 | 
			
		||||
| 
						 | 
				
			
			@ -1421,8 +1428,6 @@ static int init_types(void)
 | 
			
		|||
    if (init_identifiers() < 0) return 0;
 | 
			
		||||
    state->AST_type = PyType_FromSpec(&AST_type_spec);
 | 
			
		||||
    if (!state->AST_type) return 0;
 | 
			
		||||
    ((PyTypeObject*)state->AST_type)->tp_dictoffset = offsetof(AST_object,
 | 
			
		||||
     dict);
 | 
			
		||||
    if (add_ast_fields() < 0) return 0;
 | 
			
		||||
    state->mod_type = make_type("mod", state->AST_type, NULL, 0);
 | 
			
		||||
    if (!state->mod_type) return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue