mirror of
https://github.com/micropython/micropython.git
synced 2026-01-05 11:40:18 +01:00
Factorise EMIT_COMMON calls, mostly into emit_pass1.
This commit is contained in:
21
py/emitcpy.c
21
py/emitcpy.c
@@ -29,6 +29,10 @@ struct _emit_t {
|
||||
int *label_offsets;
|
||||
};
|
||||
|
||||
// forward declarations
|
||||
static const emit_method_table_t emit_cpy_method_table;
|
||||
static void emit_cpy_load_const_verbatim_quoted_str(emit_t *emit, qstr qstr, bool bytes);
|
||||
|
||||
static void emit_cpy_set_native_types(emit_t *emit, bool do_native_types) {
|
||||
}
|
||||
|
||||
@@ -63,6 +67,18 @@ static void emit_cpy_set_stack_size(emit_t *emit, int size) {
|
||||
emit->stack_size = size;
|
||||
}
|
||||
|
||||
static void emit_cpy_load_id(emit_t *emit, qstr qstr) {
|
||||
emit_common_load_id(emit, &emit_cpy_method_table, emit->scope, qstr);
|
||||
}
|
||||
|
||||
static void emit_cpy_store_id(emit_t *emit, qstr qstr) {
|
||||
emit_common_store_id(emit, &emit_cpy_method_table, emit->scope, qstr);
|
||||
}
|
||||
|
||||
static void emit_cpy_delete_id(emit_t *emit, qstr qstr) {
|
||||
emit_common_delete_id(emit, &emit_cpy_method_table, emit->scope, qstr);
|
||||
}
|
||||
|
||||
static void emit_pre(emit_t *emit, int stack_size_delta, int byte_code_size) {
|
||||
emit->stack_size += stack_size_delta;
|
||||
if (emit->stack_size > emit->scope->stack_size) {
|
||||
@@ -156,7 +172,6 @@ static void emit_cpy_load_const_id(emit_t *emit, qstr qstr) {
|
||||
}
|
||||
}
|
||||
|
||||
static void emit_cpy_load_const_verbatim_quoted_str(emit_t *emit, qstr qstr, bool bytes);
|
||||
static void emit_cpy_load_const_str(emit_t *emit, qstr qstr, bool bytes) {
|
||||
emit_pre(emit, 1, 3);
|
||||
if (emit->pass == PASS_3) {
|
||||
@@ -818,6 +833,10 @@ static const emit_method_table_t emit_cpy_method_table = {
|
||||
emit_cpy_get_stack_size,
|
||||
emit_cpy_set_stack_size,
|
||||
|
||||
emit_cpy_load_id,
|
||||
emit_cpy_store_id,
|
||||
emit_cpy_delete_id,
|
||||
|
||||
emit_cpy_label_assign,
|
||||
emit_cpy_import_name,
|
||||
emit_cpy_import_from,
|
||||
|
||||
Reference in New Issue
Block a user