@@ -72,7 +72,7 @@ typedef struct _emit_method_table_t {
7272 void (* end_pass )(emit_t * emit );
7373 bool (* last_emit_was_return_value )(emit_t * emit );
7474 void (* adjust_stack_size )(emit_t * emit , mp_int_t delta );
75- void (* set_line_number )(emit_t * emit , mp_uint_t line );
75+ void (* set_source_line )(emit_t * emit , mp_uint_t line );
7676
7777 mp_emit_method_table_id_ops_t load_id ;
7878 mp_emit_method_table_id_ops_t store_id ;
@@ -166,6 +166,10 @@ extern const emit_method_table_t emit_native_x86_method_table;
166166extern const emit_method_table_t emit_native_thumb_method_table ;
167167extern const emit_method_table_t emit_native_arm_method_table ;
168168
169+ extern const mp_emit_method_table_id_ops_t mp_emit_bc_method_table_load_id_ops ;
170+ extern const mp_emit_method_table_id_ops_t mp_emit_bc_method_table_store_id_ops ;
171+ extern const mp_emit_method_table_id_ops_t mp_emit_bc_method_table_delete_id_ops ;
172+
169173emit_t * emit_cpython_new (void );
170174emit_t * emit_bc_new (void );
171175emit_t * emit_native_x64_new (mp_uint_t max_num_labels );
@@ -183,6 +187,91 @@ void emit_native_x86_free(emit_t *emit);
183187void emit_native_thumb_free (emit_t * emit );
184188void emit_native_arm_free (emit_t * emit );
185189
190+ void mp_emit_bc_start_pass (emit_t * emit , pass_kind_t pass , scope_t * scope );
191+ void mp_emit_bc_end_pass (emit_t * emit );
192+ bool mp_emit_bc_last_emit_was_return_value (emit_t * emit );
193+ void mp_emit_bc_adjust_stack_size (emit_t * emit , mp_int_t delta );
194+ void mp_emit_bc_set_source_line (emit_t * emit , mp_uint_t line );
195+
196+ void mp_emit_bc_load_fast (emit_t * emit , qstr qst , mp_uint_t local_num );
197+ void mp_emit_bc_load_deref (emit_t * emit , qstr qst , mp_uint_t local_num );
198+ void mp_emit_bc_load_name (emit_t * emit , qstr qst );
199+ void mp_emit_bc_load_global (emit_t * emit , qstr qst );
200+ void mp_emit_bc_store_fast (emit_t * emit , qstr qst , mp_uint_t local_num );
201+ void mp_emit_bc_store_deref (emit_t * emit , qstr qst , mp_uint_t local_num );
202+ void mp_emit_bc_store_name (emit_t * emit , qstr qst );
203+ void mp_emit_bc_store_global (emit_t * emit , qstr qst );
204+ void mp_emit_bc_delete_fast (emit_t * emit , qstr qst , mp_uint_t local_num );
205+ void mp_emit_bc_delete_deref (emit_t * emit , qstr qst , mp_uint_t local_num );
206+ void mp_emit_bc_delete_name (emit_t * emit , qstr qst );
207+ void mp_emit_bc_delete_global (emit_t * emit , qstr qst );
208+
209+ void mp_emit_bc_label_assign (emit_t * emit , mp_uint_t l );
210+ void mp_emit_bc_import_name (emit_t * emit , qstr qst );
211+ void mp_emit_bc_import_from (emit_t * emit , qstr qst );
212+ void mp_emit_bc_import_star (emit_t * emit );
213+ void mp_emit_bc_load_const_tok (emit_t * emit , mp_token_kind_t tok );
214+ void mp_emit_bc_load_const_small_int (emit_t * emit , mp_int_t arg );
215+ void mp_emit_bc_load_const_str (emit_t * emit , qstr qst , bool bytes );
216+ void mp_emit_bc_load_const_obj (emit_t * emit , void * obj );
217+ void mp_emit_bc_load_null (emit_t * emit );
218+ void mp_emit_bc_load_attr (emit_t * emit , qstr qst );
219+ void mp_emit_bc_load_method (emit_t * emit , qstr qst );
220+ void mp_emit_bc_load_build_class (emit_t * emit );
221+ void mp_emit_bc_load_subscr (emit_t * emit );
222+ void mp_emit_bc_store_attr (emit_t * emit , qstr qst );
223+ void mp_emit_bc_store_subscr (emit_t * emit );
224+ void mp_emit_bc_delete_attr (emit_t * emit , qstr qst );
225+ void mp_emit_bc_delete_subscr (emit_t * emit );
226+ void mp_emit_bc_dup_top (emit_t * emit );
227+ void mp_emit_bc_dup_top_two (emit_t * emit );
228+ void mp_emit_bc_pop_top (emit_t * emit );
229+ void mp_emit_bc_rot_two (emit_t * emit );
230+ void mp_emit_bc_rot_three (emit_t * emit );
231+ void mp_emit_bc_jump (emit_t * emit , mp_uint_t label );
232+ void mp_emit_bc_pop_jump_if (emit_t * emit , bool cond , mp_uint_t label );
233+ void mp_emit_bc_jump_if_or_pop (emit_t * emit , bool cond , mp_uint_t label );
234+ void mp_emit_bc_unwind_jump (emit_t * emit , mp_uint_t label , mp_uint_t except_depth );
235+ #define mp_emit_bc_break_loop mp_emit_bc_unwind_jump
236+ #define mp_emit_bc_continue_loop mp_emit_bc_unwind_jump
237+ void mp_emit_bc_setup_with (emit_t * emit , mp_uint_t label );
238+ void mp_emit_bc_with_cleanup (emit_t * emit );
239+ void mp_emit_bc_setup_except (emit_t * emit , mp_uint_t label );
240+ void mp_emit_bc_setup_finally (emit_t * emit , mp_uint_t label );
241+ void mp_emit_bc_end_finally (emit_t * emit );
242+ void mp_emit_bc_get_iter (emit_t * emit );
243+ void mp_emit_bc_for_iter (emit_t * emit , mp_uint_t label );
244+ void mp_emit_bc_for_iter_end (emit_t * emit );
245+ void mp_emit_bc_pop_block (emit_t * emit );
246+ void mp_emit_bc_pop_except (emit_t * emit );
247+ void mp_emit_bc_unary_op (emit_t * emit , mp_unary_op_t op );
248+ void mp_emit_bc_binary_op (emit_t * emit , mp_binary_op_t op );
249+ void mp_emit_bc_build_tuple (emit_t * emit , mp_uint_t n_args );
250+ void mp_emit_bc_build_list (emit_t * emit , mp_uint_t n_args );
251+ void mp_emit_bc_list_append (emit_t * emit , mp_uint_t list_stack_index );
252+ void mp_emit_bc_build_map (emit_t * emit , mp_uint_t n_args );
253+ void mp_emit_bc_store_map (emit_t * emit );
254+ void mp_emit_bc_map_add (emit_t * emit , mp_uint_t map_stack_index );
255+ #if MICROPY_PY_BUILTINS_SET
256+ void mp_emit_bc_build_set (emit_t * emit , mp_uint_t n_args );
257+ void mp_emit_bc_set_add (emit_t * emit , mp_uint_t set_stack_index );
258+ #endif
259+ #if MICROPY_PY_BUILTINS_SLICE
260+ void mp_emit_bc_build_slice (emit_t * emit , mp_uint_t n_args );
261+ #endif
262+ void mp_emit_bc_unpack_sequence (emit_t * emit , mp_uint_t n_args );
263+ void mp_emit_bc_unpack_ex (emit_t * emit , mp_uint_t n_left , mp_uint_t n_right );
264+ void mp_emit_bc_make_function (emit_t * emit , scope_t * scope , mp_uint_t n_pos_defaults , mp_uint_t n_kw_defaults );
265+ void mp_emit_bc_make_closure (emit_t * emit , scope_t * scope , mp_uint_t n_closed_over , mp_uint_t n_pos_defaults , mp_uint_t n_kw_defaults );
266+ void mp_emit_bc_call_function (emit_t * emit , mp_uint_t n_positional , mp_uint_t n_keyword , mp_uint_t star_flags );
267+ void mp_emit_bc_call_method (emit_t * emit , mp_uint_t n_positional , mp_uint_t n_keyword , mp_uint_t star_flags );
268+ void mp_emit_bc_return_value (emit_t * emit );
269+ void mp_emit_bc_raise_varargs (emit_t * emit , mp_uint_t n_args );
270+ void mp_emit_bc_yield_value (emit_t * emit );
271+ void mp_emit_bc_yield_from (emit_t * emit );
272+ void mp_emit_bc_start_except_handler (emit_t * emit );
273+ void mp_emit_bc_end_except_handler (emit_t * emit );
274+
186275typedef struct _emit_inline_asm_t emit_inline_asm_t ;
187276
188277typedef struct _emit_inline_asm_method_table_t {
0 commit comments