diff options
author | L. A. F. Pereira <l@tia.mat.br> | 2022-04-13 22:09:20 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-13 22:09:20 (GMT) |
commit | 5f056acdf28662e773ec5fe27db47ccad0e7671f (patch) | |
tree | a7e9500af6c651f8909c8523ae268e2a9240d903 /Python/compile.c | |
parent | 04f9658c591f61f0d45ab1a818840a4c4ef82f64 (diff) | |
download | cpython-5f056acdf28662e773ec5fe27db47ccad0e7671f.zip cpython-5f056acdf28662e773ec5fe27db47ccad0e7671f.tar.gz cpython-5f056acdf28662e773ec5fe27db47ccad0e7671f.tar.bz2 |
Fill holes in internal compiler structs (#91458)
Diffstat (limited to 'Python/compile.c')
-rw-r--r-- | Python/compile.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/Python/compile.c b/Python/compile.c index 38cf5f3..718b521 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -233,19 +233,23 @@ typedef struct basicblock_ { reverse order that the block are allocated. b_list points to the next block, not to be confused with b_next, which is next by control flow. */ struct basicblock_ *b_list; - /* number of instructions used */ - int b_iused; - /* length of instruction array (b_instr) */ - int b_ialloc; + /* Exception stack at start of block, used by assembler to create the exception handling table */ + ExceptStack *b_exceptstack; /* pointer to an array of instructions, initially NULL */ struct instr *b_instr; /* If b_next is non-NULL, it is a pointer to the next block reached by normal control flow. */ struct basicblock_ *b_next; - /* b_return is true if a RETURN_VALUE opcode is inserted. */ - unsigned b_return : 1; + /* number of instructions used */ + int b_iused; + /* length of instruction array (b_instr) */ + int b_ialloc; /* Number of predecssors that a block has. */ int b_predecessors; + /* depth of stack upon entry of block, computed by stackdepth() */ + int b_startdepth; + /* instruction offset for block, computed by assemble_jump_offsets() */ + int b_offset; /* Basic block has no fall through (it ends with a return, raise or jump) */ unsigned b_nofallthrough : 1; /* Basic block is an exception handler that preserves lasti */ @@ -254,12 +258,8 @@ typedef struct basicblock_ { unsigned b_visited : 1; /* Basic block exits scope (it ends with a return or raise) */ unsigned b_exit : 1; - /* depth of stack upon entry of block, computed by stackdepth() */ - int b_startdepth; - /* instruction offset for block, computed by assemble_jump_offsets() */ - int b_offset; - /* Exception stack at start of block, used by assembler to create the exception handling table */ - ExceptStack *b_exceptstack; + /* b_return is true if a RETURN_VALUE opcode is inserted. */ + unsigned b_return : 1; } basicblock; /* fblockinfo tracks the current frame block. @@ -7051,23 +7051,23 @@ compiler_match(struct compiler *c, stmt_ty s) struct assembler { PyObject *a_bytecode; /* bytes containing bytecode */ + PyObject *a_lnotab; /* bytes containing lnotab */ + PyObject *a_enotab; /* bytes containing enotab */ + PyObject *a_cnotab; /* bytes containing cnotab */ + PyObject *a_except_table; /* bytes containing exception table */ + basicblock *a_entry; int a_offset; /* offset into bytecode */ int a_nblocks; /* number of reachable blocks */ - PyObject *a_lnotab; /* bytes containing lnotab */ - PyObject* a_enotab; /* bytes containing enotab */ - PyObject* a_cnotab; /* bytes containing cnotab */ + int a_except_table_off; /* offset into exception table */ int a_lnotab_off; /* offset into lnotab */ int a_enotab_off; /* offset into enotab */ int a_cnotab_off; /* offset into cnotab */ - PyObject *a_except_table; /* bytes containing exception table */ - int a_except_table_off; /* offset into exception table */ int a_prevlineno; /* lineno of last emitted line in line table */ int a_prev_end_lineno; /* end_lineno of last emitted line in line table */ int a_lineno; /* lineno of last emitted instruction */ int a_end_lineno; /* end_lineno of last emitted instruction */ int a_lineno_start; /* bytecode start offset of current lineno */ int a_end_lineno_start; /* bytecode start offset of current end_lineno */ - basicblock *a_entry; }; Py_LOCAL_INLINE(void) |