Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions codegen.c
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@ struct code_generator *codegenerator_new(struct compile_process *process)
generator->entry_points = vector_create(sizeof(struct codegen_entry_point *));
generator->exit_points = vector_create(sizeof(struct codegen_exit_point *));
generator->responses = vector_create(sizeof(struct response *));
generator->_switch.swtiches = vector_create(sizeof(struct generator_switch_stmt_entity));
generator->_switch.switches = vector_create(sizeof(struct generator_switch_stmt_entity));
generator->custom_data_section = vector_create(sizeof(const char*));
return generator;
}
Expand Down Expand Up @@ -529,7 +529,7 @@ void codegen_begin_switch_statement()
{
struct code_generator *generator = current_process->generator;
struct generator_switch_stmt *switch_stmt_data = &generator->_switch;
vector_push(switch_stmt_data->swtiches, &switch_stmt_data->current);
vector_push(switch_stmt_data->switches, &switch_stmt_data->current);
memset(&switch_stmt_data->current, 0, sizeof(struct generator_switch_stmt_entity));
int switch_stmt_id = codegen_label_count();
asm_push(".switch_stmt_%i:", switch_stmt_id);
Expand All @@ -542,8 +542,8 @@ void codegen_end_switch_statement()
struct generator_switch_stmt *switch_stmt_data = &generator->_switch;
asm_push(".switch_stmt_%i_end:", switch_stmt_data->current.id);
// Lets restore the older switch statement
memcpy(&switch_stmt_data->current, vector_back(switch_stmt_data->swtiches), sizeof(struct generator_switch_stmt_entity));
vector_pop(switch_stmt_data->swtiches);
memcpy(&switch_stmt_data->current, vector_back(switch_stmt_data->switches), sizeof(struct generator_switch_stmt_entity));
vector_pop(switch_stmt_data->switches);
}

int codegen_switch_id()
Expand Down Expand Up @@ -1719,7 +1719,7 @@ int codegen_set_flag_for_operator(const char *op)
}
else if (S_EQ(op, "%"))
{
flag |= EXPRESSION_IS_MODULAS;
flag |= EXPRESSION_IS_MODULUS;
}
else if (S_EQ(op, ">"))
{
Expand Down Expand Up @@ -1851,7 +1851,7 @@ void codegen_gen_math_for_value(const char *reg, const char *value, int flags, b
asm_push("div ecx");
}
}
else if (flags & EXPRESSION_IS_MODULAS)
else if (flags & EXPRESSION_IS_MODULUS)
{
asm_push("mov ecx, %s", value);
asm_push("cdq");
Expand Down
8 changes: 4 additions & 4 deletions compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ struct code_generator
} current;

// Vector of generatr_switch_stmt_entity
struct vector* swtiches;
struct vector* switches;
} _switch;

// A vector of struct string_table_element*
Expand Down Expand Up @@ -1197,15 +1197,15 @@ enum
IS_STATEMENT_RETURN = 0b10000000000000000000000000000,
IS_RIGHT_OPERAND_OF_ASSIGNMENT = 0b100000000000000000000000000000,
IS_LEFT_OPERAND_OF_ASSIGNMENT = 0b1000000000000000000000000000000,
EXPRESSION_IS_MODULAS = 0b10000000000000000000000000000000,
EXPRESSION_IS_MODULUS = 0b10000000000000000000000000000000,
};

#define EXPRESSION_GEN_MATHABLE ( \
EXPRESSION_IS_ADDITION | \
EXPRESSION_IS_SUBTRACTION | \
EXPRESSION_IS_MULTIPLICATION | \
EXPRESSION_IS_DIVISION | \
EXPRESSION_IS_MODULAS | \
EXPRESSION_IS_MODULUS | \
EXPRESSION_IS_FUNCTION_CALL | \
EXPRESSION_INDIRECTION | \
EXPRESSION_GET_ADDRESS | \
Expand All @@ -1227,7 +1227,7 @@ enum

#define EXPRESSION_UNINHERITABLE_FLAGS ( \
EXPRESSION_FLAG_RIGHT_NODE | EXPRESSION_IN_FUNCTION_CALL_ARGUMENTS | \
EXPRESSION_IS_ADDITION | EXPRESSION_IS_MODULAS | EXPRESSION_IS_SUBTRACTION | EXPRESSION_IS_MULTIPLICATION | \
EXPRESSION_IS_ADDITION | EXPRESSION_IS_MODULUS | EXPRESSION_IS_SUBTRACTION | EXPRESSION_IS_MULTIPLICATION | \
EXPRESSION_IS_DIVISION | EXPRESSION_IS_ABOVE | EXPRESSION_IS_ABOVE_OR_EQUAL | \
EXPRESSION_IS_BELOW | EXPRESSION_IS_BELOW_OR_EQUAL | EXPRESSION_IS_EQUAL | \
EXPRESSION_IS_NOT_EQUAL | EXPRESSION_LOGICAL_AND | \
Expand Down