lang: codegen: replace codegen_value with a new system for passing different types of values between code generators
This commit is contained in:
@@ -363,7 +363,7 @@ static enum ivy_status state_init(
|
||||
|
||||
static enum ivy_status state_fini(
|
||||
struct ivy_codegen *gen, struct code_generator_state *state,
|
||||
struct mie_value **result)
|
||||
struct code_generator_value *result)
|
||||
{
|
||||
debug_printf("codegen: end of expression\n");
|
||||
|
||||
@@ -472,19 +472,23 @@ static enum ivy_status state_fini(
|
||||
}
|
||||
|
||||
struct expr_item *result_item = b_unbox(struct expr_item, cur, i_entry);
|
||||
struct mie_value *result_value;
|
||||
if (result_item->i_operand_type == EXPR_OPERAND_VAR) {
|
||||
*result = codegen_load_variable(gen, &result_item->i_var);
|
||||
result_value = load_variable(gen, &result_item->i_var);
|
||||
} else {
|
||||
*result = result_item->i_value;
|
||||
result_value = result_item->i_value;
|
||||
}
|
||||
free(result_item);
|
||||
|
||||
return IVY_OK;
|
||||
result->v_type = CODE_GENERATOR_VALUE_MIE_VALUE;
|
||||
result->v_value.mie_value = result_value;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static struct code_generator_result value_received(
|
||||
struct ivy_codegen *gen, struct code_generator_state *state,
|
||||
struct mie_value *value)
|
||||
struct code_generator_value *value)
|
||||
{
|
||||
struct expr_codegen_state *expr = (struct expr_codegen_state *)state;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user