@@ -233,19 +233,23 @@ typedef struct basicblock_ {
233233 reverse order that the block are allocated. b_list points to the next
234234 block, not to be confused with b_next, which is next by control flow. */
235235 struct basicblock_ * b_list ;
236- /* number of instructions used */
237- int b_iused ;
238- /* length of instruction array (b_instr) */
239- int b_ialloc ;
236+ /* Exception stack at start of block, used by assembler to create the exception handling table */
237+ ExceptStack * b_exceptstack ;
240238 /* pointer to an array of instructions, initially NULL */
241239 struct instr * b_instr ;
242240 /* If b_next is non-NULL, it is a pointer to the next
243241 block reached by normal control flow. */
244242 struct basicblock_ * b_next ;
245- /* b_return is true if a RETURN_VALUE opcode is inserted. */
246- unsigned b_return : 1 ;
243+ /* number of instructions used */
244+ int b_iused ;
245+ /* length of instruction array (b_instr) */
246+ int b_ialloc ;
247247 /* Number of predecssors that a block has. */
248248 int b_predecessors ;
249+ /* depth of stack upon entry of block, computed by stackdepth() */
250+ int b_startdepth ;
251+ /* instruction offset for block, computed by assemble_jump_offsets() */
252+ int b_offset ;
249253 /* Basic block has no fall through (it ends with a return, raise or jump) */
250254 unsigned b_nofallthrough : 1 ;
251255 /* Basic block is an exception handler that preserves lasti */
@@ -254,12 +258,8 @@ typedef struct basicblock_ {
254258 unsigned b_visited : 1 ;
255259 /* Basic block exits scope (it ends with a return or raise) */
256260 unsigned b_exit : 1 ;
257- /* depth of stack upon entry of block, computed by stackdepth() */
258- int b_startdepth ;
259- /* instruction offset for block, computed by assemble_jump_offsets() */
260- int b_offset ;
261- /* Exception stack at start of block, used by assembler to create the exception handling table */
262- ExceptStack * b_exceptstack ;
261+ /* b_return is true if a RETURN_VALUE opcode is inserted. */
262+ unsigned b_return : 1 ;
263263} basicblock ;
264264
265265/* fblockinfo tracks the current frame block.
@@ -7051,23 +7051,23 @@ compiler_match(struct compiler *c, stmt_ty s)
70517051
70527052struct assembler {
70537053 PyObject * a_bytecode ; /* bytes containing bytecode */
7054+ PyObject * a_lnotab ; /* bytes containing lnotab */
7055+ PyObject * a_enotab ; /* bytes containing enotab */
7056+ PyObject * a_cnotab ; /* bytes containing cnotab */
7057+ PyObject * a_except_table ; /* bytes containing exception table */
7058+ basicblock * a_entry ;
70547059 int a_offset ; /* offset into bytecode */
70557060 int a_nblocks ; /* number of reachable blocks */
7056- PyObject * a_lnotab ; /* bytes containing lnotab */
7057- PyObject * a_enotab ; /* bytes containing enotab */
7058- PyObject * a_cnotab ; /* bytes containing cnotab */
7061+ int a_except_table_off ; /* offset into exception table */
70597062 int a_lnotab_off ; /* offset into lnotab */
70607063 int a_enotab_off ; /* offset into enotab */
70617064 int a_cnotab_off ; /* offset into cnotab */
7062- PyObject * a_except_table ; /* bytes containing exception table */
7063- int a_except_table_off ; /* offset into exception table */
70647065 int a_prevlineno ; /* lineno of last emitted line in line table */
70657066 int a_prev_end_lineno ; /* end_lineno of last emitted line in line table */
70667067 int a_lineno ; /* lineno of last emitted instruction */
70677068 int a_end_lineno ; /* end_lineno of last emitted instruction */
70687069 int a_lineno_start ; /* bytecode start offset of current lineno */
70697070 int a_end_lineno_start ; /* bytecode start offset of current end_lineno */
7070- basicblock * a_entry ;
70717071};
70727072
70737073Py_LOCAL_INLINE (void )
0 commit comments