26 #ifndef MICROPY_INCLUDED_PY_EMIT_H 27 #define MICROPY_INCLUDED_PY_EMIT_H 49 #define MP_EMIT_STAR_FLAG_SINGLE (0x01) 50 #define MP_EMIT_STAR_FLAG_DOUBLE (0x02) 52 #define MP_EMIT_BREAK_FROM_FOR (0x8000) 54 #define MP_EMIT_NATIVE_TYPE_ENABLE (0) 55 #define MP_EMIT_NATIVE_TYPE_RETURN (1) 56 #define MP_EMIT_NATIVE_TYPE_ARG (2) 122 #if MICROPY_PY_BUILTINS_SET 125 #if MICROPY_PY_BUILTINS_SLICE 222 #define mp_emit_bc_break_loop mp_emit_bc_unwind_jump 223 #define mp_emit_bc_continue_loop mp_emit_bc_unwind_jump 240 #if MICROPY_PY_BUILTINS_SET 243 #if MICROPY_PY_BUILTINS_SLICE 282 #define mp_emitter_warning(pass, msg) 285 #endif // MICROPY_INCLUDED_PY_EMIT_H emit_t * emit_native_x86_new(mp_obj_t *error_slot, mp_uint_t max_num_labels)
void(* break_loop)(emit_t *emit, mp_uint_t label, mp_uint_t except_depth)
void(* store_attr)(emit_t *emit, qstr qst)
const emit_method_table_t emit_native_x86_method_table
void mp_emit_bc_delete_global(emit_t *emit, qstr qst)
void(* for_iter_end)(emit_t *emit)
emit_t * emit_native_x64_new(mp_obj_t *error_slot, mp_uint_t max_num_labels)
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)
void(* return_value)(emit_t *emit)
void mp_emit_bc_delete_deref(emit_t *emit, qstr qst, mp_uint_t local_num)
void mp_emit_common_id_op(emit_t *emit, const mp_emit_method_table_id_ops_t *emit_method_table, scope_t *scope, qstr qst)
void mp_emit_bc_pop_top(emit_t *emit)
void(* setup_finally)(emit_t *emit, mp_uint_t label)
void mp_emit_bc_delete_name(emit_t *emit, qstr qst)
const emit_method_table_t emit_native_x64_method_table
void mp_emit_bc_rot_two(emit_t *emit)
void mp_emit_bc_dup_top_two(emit_t *emit)
void(* build_tuple)(emit_t *emit, mp_uint_t n_args)
void mp_emit_bc_load_const_str(emit_t *emit, qstr qst)
void mp_emit_bc_for_iter_end(emit_t *emit)
void(* pop_block)(emit_t *emit)
void(* store_map)(emit_t *emit)
void mp_emit_bc_unpack_ex(emit_t *emit, mp_uint_t n_left, mp_uint_t n_right)
void(* start_pass)(emit_t *emit, pass_kind_t pass, scope_t *scope)
void(* deref)(emit_t *emit, qstr qst, mp_uint_t local_num)
void mp_emit_bc_setup_except(emit_t *emit, mp_uint_t label)
void(* pop_jump_if)(emit_t *emit, bool cond, mp_uint_t label)
void mp_emit_bc_store_attr(emit_t *emit, qstr qst)
void(* op)(emit_inline_asm_t *emit, qstr op, mp_uint_t n_args, mp_parse_node_t *pn_args)
void emit_native_thumb_free(emit_t *emit)
void mp_emit_bc_build_map(emit_t *emit, mp_uint_t n_args)
void mp_emit_bc_load_global(emit_t *emit, qstr qst)
void(* binary_op)(emit_t *emit, mp_binary_op_t op)
void(* with_cleanup)(emit_t *emit, mp_uint_t label)
void mp_emit_bc_pop_block(emit_t *emit)
void mp_emit_bc_store_global(emit_t *emit, qstr qst)
void emit_bc_free(emit_t *emit)
void mp_emit_bc_end_pass(emit_t *emit)
void mp_emit_bc_import_name(emit_t *emit, qstr qst)
void(* set_native_type)(emit_t *emit, mp_uint_t op, mp_uint_t arg1, qstr arg2)
void mp_emit_bc_yield_value(emit_t *emit)
void(* load_build_class)(emit_t *emit)
void mp_emit_bc_load_build_class(emit_t *emit)
void(* unpack_ex)(emit_t *emit, mp_uint_t n_left, mp_uint_t n_right)
void(* delete_attr)(emit_t *emit, qstr qst)
bool mp_emit_bc_last_emit_was_return_value(emit_t *emit)
void(* start_except_handler)(emit_t *emit)
void(* end_pass)(emit_inline_asm_t *emit, mp_uint_t type_sig)
void(* make_function)(emit_t *emit, scope_t *scope, mp_uint_t n_pos_defaults, mp_uint_t n_kw_defaults)
uintptr_t mp_parse_node_t
emit_inline_asm_t * emit_inline_thumb_new(mp_uint_t max_num_labels)
void mp_emit_bc_import_star(emit_t *emit)
void(* setup_with)(emit_t *emit, mp_uint_t label)
void(* store_comp)(emit_t *emit, scope_kind_t kind, mp_uint_t set_stack_index)
struct _emit_method_table_t emit_method_table_t
void(* load_subscr)(emit_t *emit)
void(* build_list)(emit_t *emit, mp_uint_t n_args)
void(* load_null)(emit_t *emit)
const emit_inline_asm_method_table_t emit_inline_thumb_method_table
enum _mp_token_kind_t mp_token_kind_t
void mp_emit_bc_unwind_jump(emit_t *emit, mp_uint_t label, mp_uint_t except_depth)
void(* load_const_str)(emit_t *emit, qstr qst)
void(* call_method)(emit_t *emit, mp_uint_t n_positional, mp_uint_t n_keyword, mp_uint_t star_flags)
emit_t * emit_bc_new(void)
void mp_emit_bc_load_attr(emit_t *emit, qstr qst)
const emit_method_table_t emit_native_arm_method_table
void(* unary_op)(emit_t *emit, mp_unary_op_t op)
void(* end_pass)(emit_t *emit)
void emit_native_arm_free(emit_t *emit)
void(* load_method)(emit_t *emit, qstr qst, bool is_super)
void(* import_name)(emit_t *emit, qstr qst)
void(* for_iter)(emit_t *emit, mp_uint_t label)
void(* import_star)(emit_t *emit)
void(* yield_value)(emit_t *emit)
void mp_emit_bc_delete_attr(emit_t *emit, qstr qst)
void(* delete_subscr)(emit_t *emit)
void mp_emit_bc_end_except_handler(emit_t *emit)
void(* end_except_handler)(emit_t *emit)
void(* rot_two)(emit_t *emit)
void(* name)(emit_t *emit, qstr qst)
void emit_inline_xtensa_free(emit_inline_asm_t *emit)
const mp_emit_method_table_id_ops_t mp_emit_bc_method_table_delete_id_ops
void mp_emit_bc_load_name(emit_t *emit, qstr qst)
void(* label_assign)(emit_t *emit, mp_uint_t l)
void mp_emit_bc_jump_if_or_pop(emit_t *emit, bool cond, mp_uint_t label)
void mp_emit_bc_unary_op(emit_t *emit, mp_unary_op_t op)
void mp_emit_common_get_id_for_load(scope_t *scope, qstr qst)
void mp_emit_bc_call_method(emit_t *emit, mp_uint_t n_positional, mp_uint_t n_keyword, mp_uint_t star_flags)
void mp_emit_bc_load_const_obj(emit_t *emit, mp_obj_t obj)
emit_t * emit_native_xtensa_new(mp_obj_t *error_slot, mp_uint_t max_num_labels)
void(* store_subscr)(emit_t *emit)
void mp_emit_bc_load_null(emit_t *emit)
void mp_emit_bc_load_subscr(emit_t *emit)
void(* start_pass)(emit_inline_asm_t *emit, pass_kind_t pass, mp_obj_t *error_slot)
void mp_emit_bc_load_fast(emit_t *emit, qstr qst, mp_uint_t local_num)
void mp_emit_bc_for_iter(emit_t *emit, mp_uint_t label)
bool(* label)(emit_inline_asm_t *emit, mp_uint_t label_num, qstr label_id)
void mp_emit_common_get_id_for_modification(scope_t *scope, qstr qst)
void mp_emit_bc_pop_except(emit_t *emit)
void(* dup_top)(emit_t *emit)
mp_emit_method_table_id_ops_t delete_id
emit_t * emit_native_thumb_new(mp_obj_t *error_slot, mp_uint_t max_num_labels)
void mp_emit_bc_jump(emit_t *emit, mp_uint_t label)
void(* unpack_sequence)(emit_t *emit, mp_uint_t n_args)
mp_emit_method_table_id_ops_t store_id
void mp_emit_bc_binary_op(emit_t *emit, mp_binary_op_t op)
void(* set_source_line)(emit_t *emit, mp_uint_t line)
void(* pop_top)(emit_t *emit)
void(* rot_three)(emit_t *emit)
const mp_emit_method_table_id_ops_t mp_emit_bc_method_table_store_id_ops
void mp_emit_bc_unpack_sequence(emit_t *emit, mp_uint_t n_args)
void(* yield_from)(emit_t *emit)
void mp_emit_bc_set_source_line(emit_t *emit, mp_uint_t line)
void(* continue_loop)(emit_t *emit, mp_uint_t label, mp_uint_t except_depth)
void(* setup_except)(emit_t *emit, mp_uint_t label)
void mp_emit_bc_start_except_handler(emit_t *emit)
struct _mp_emit_method_table_id_ops_t mp_emit_method_table_id_ops_t
void(* load_const_tok)(emit_t *emit, mp_token_kind_t tok)
void mp_emit_bc_delete_subscr(emit_t *emit)
void mp_emit_bc_call_function(emit_t *emit, mp_uint_t n_positional, mp_uint_t n_keyword, mp_uint_t star_flags)
void mp_emit_bc_load_const_small_int(emit_t *emit, mp_int_t arg)
void mp_emit_bc_setup_finally(emit_t *emit, mp_uint_t label)
const mp_emit_method_table_id_ops_t mp_emit_bc_method_table_load_id_ops
void(* adjust_stack_size)(emit_t *emit, mp_int_t delta)
void(* build_map)(emit_t *emit, mp_uint_t n_args)
void(* call_function)(emit_t *emit, mp_uint_t n_positional, mp_uint_t n_keyword, mp_uint_t star_flags)
void mp_emit_bc_pop_jump_if(emit_t *emit, bool cond, mp_uint_t label)
void(* jump_if_or_pop)(emit_t *emit, bool cond, mp_uint_t label)
emit_inline_asm_t * emit_inline_xtensa_new(mp_uint_t max_num_labels)
void mp_emit_bc_store_subscr(emit_t *emit)
#define mp_emitter_warning(pass, msg)
void mp_emit_bc_build_list(emit_t *emit, mp_uint_t n_args)
void mp_emit_bc_rot_three(emit_t *emit)
void mp_emit_bc_adjust_stack_size(emit_t *emit, mp_int_t delta)
void mp_emit_bc_store_name(emit_t *emit, qstr qst)
const emit_method_table_t emit_native_thumb_method_table
void(* dup_top_two)(emit_t *emit)
mp_uint_t(* count_params)(emit_inline_asm_t *emit, mp_uint_t n_params, mp_parse_node_t *pn_params)
void mp_emit_bc_return_value(emit_t *emit)
void mp_emit_bc_load_method(emit_t *emit, qstr qst, bool is_super)
const emit_method_table_t emit_bc_method_table
void mp_emit_bc_make_function(emit_t *emit, scope_t *scope, mp_uint_t n_pos_defaults, mp_uint_t n_kw_defaults)
void mp_emit_bc_label_assign(emit_t *emit, mp_uint_t l)
void mp_emit_bc_delete_fast(emit_t *emit, qstr qst, mp_uint_t local_num)
void mp_emit_bc_store_fast(emit_t *emit, qstr qst, mp_uint_t local_num)
bool(* last_emit_was_return_value)(emit_t *emit)
void mp_emit_bc_with_cleanup(emit_t *emit, mp_uint_t label)
void mp_emit_bc_load_deref(emit_t *emit, qstr qst, mp_uint_t local_num)
void mp_emit_bc_store_map(emit_t *emit)
void(* load_const_obj)(emit_t *emit, mp_obj_t obj)
void mp_emit_bc_yield_from(emit_t *emit)
void mp_emit_bc_import_from(emit_t *emit, qstr qst)
void mp_emit_bc_setup_with(emit_t *emit, mp_uint_t label)
void mp_emit_bc_build_tuple(emit_t *emit, mp_uint_t n_args)
const emit_inline_asm_method_table_t emit_inline_xtensa_method_table
void(* load_attr)(emit_t *emit, qstr qst)
void(* 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)
void emit_bc_set_max_num_labels(emit_t *emit, mp_uint_t max_num_labels)
void mp_emit_bc_get_iter(emit_t *emit, bool use_stack)
void mp_emit_bc_dup_top(emit_t *emit)
void mp_emit_bc_load_const_tok(emit_t *emit, mp_token_kind_t tok)
const emit_method_table_t emit_native_xtensa_method_table
void emit_native_xtensa_free(emit_t *emit)
void emit_native_x86_free(emit_t *emit)
struct _emit_inline_asm_method_table_t emit_inline_asm_method_table_t
void(* get_iter)(emit_t *emit, bool use_stack)
void mp_emit_bc_end_finally(emit_t *emit)
void(* import_from)(emit_t *emit, qstr qst)
void(* pop_except)(emit_t *emit)
void mp_emit_bc_raise_varargs(emit_t *emit, mp_uint_t n_args)
emit_t * emit_native_arm_new(mp_obj_t *error_slot, mp_uint_t max_num_labels)
void emit_native_x64_free(emit_t *emit)
void mp_emit_bc_store_deref(emit_t *emit, qstr qst, mp_uint_t local_num)
mp_emit_method_table_id_ops_t load_id
void emit_inline_thumb_free(emit_inline_asm_t *emit)
void mp_emit_bc_start_pass(emit_t *emit, pass_kind_t pass, scope_t *scope)
void(* fast)(emit_t *emit, qstr qst, mp_uint_t local_num)
void(* raise_varargs)(emit_t *emit, mp_uint_t n_args)
void(* jump)(emit_t *emit, mp_uint_t label)
void(* load_const_small_int)(emit_t *emit, mp_int_t arg)
struct _emit_inline_asm_t emit_inline_asm_t
void mp_emit_bc_store_comp(emit_t *emit, scope_kind_t kind, mp_uint_t list_stack_index)
void(* global)(emit_t *emit, qstr qst)
void(* end_finally)(emit_t *emit)