frontend: update bluelib api usage

This commit is contained in:
2025-11-06 10:39:08 +00:00
parent 9622e30e0f
commit 24eef25147
10 changed files with 50 additions and 39 deletions

View File

@@ -2,7 +2,7 @@
#include "cmd.h"
#include <blue/cmd.h>
#include <blue/object/string.h>
#include <blue/ds/string.h>
#include <blue/term.h>
#include <errno.h>
#include <ivy/asm/assembler.h>
@@ -127,7 +127,7 @@ static b_string *get_source_filename(const char *src_path)
}
if (b_string_get_size(name, B_STRLEN_NORMAL) == 0) {
b_string_release(name);
b_string_unref(name);
name = NULL;
}
@@ -184,8 +184,8 @@ static int assemble(const b_command *cmd, const b_arglist *args, const b_array *
int r = assemble_file(in_path, out_path);
b_string_release(in_name);
b_string_release(out_name);
b_string_unref(in_name);
b_string_unref(out_name);
return r;
#if 0

View File

@@ -229,19 +229,22 @@ static b_result generate_mie_ir(struct compile_ctx *ctx)
static b_result build_block_isel_graph(
struct compile_ctx *ctx, struct mie_func *func, struct mie_block *block)
{
b_queue_iterator instr_it;
b_queue_foreach (&instr_it, &block->b_phi) {
b_queue_entry *entry = b_queue_first(&block->b_phi);
while (entry) {
struct mie_value *instr_v
= b_unbox(struct mie_value, instr_it.entry, v_entry);
= b_unbox(struct mie_value, entry, v_entry);
mie_select_builder_push_instr(
ctx->select, (struct mie_instr *)instr_v);
entry = b_queue_next(entry);
}
b_queue_foreach (&instr_it, &block->b_instr) {
entry = b_queue_first(&block->b_instr);
while (entry) {
struct mie_value *instr_v
= b_unbox(struct mie_value, instr_it.entry, v_entry);
= b_unbox(struct mie_value, entry, v_entry);
mie_select_builder_push_instr(
ctx->select, (struct mie_instr *)instr_v);
entry = b_queue_next(entry);
}
if (block->b_terminator) {
@@ -262,16 +265,18 @@ static b_result build_block_isel_graph(
static b_result build_func_isel_graph(struct compile_ctx *ctx, struct mie_func *func)
{
b_queue_iterator it;
b_queue_foreach (&it, &func->f_blocks) {
b_queue_entry *entry = b_queue_first(&func->f_blocks);
while (entry) {
struct mie_value *block_v
= b_unbox(struct mie_value, it.entry, v_entry);
= b_unbox(struct mie_value, entry, v_entry);
struct mie_block *block = (struct mie_block *)block_v;
b_result result = build_block_isel_graph(ctx, func, block);
if (b_result_is_error(result)) {
return b_result_propagate(result);
}
entry = b_queue_next(entry);
}
return B_RESULT_SUCCESS;
@@ -279,17 +284,18 @@ static b_result build_func_isel_graph(struct compile_ctx *ctx, struct mie_func *
static b_result build_isel_graph(struct compile_ctx *ctx)
{
b_queue_iterator it;
b_queue_foreach (&it, &ctx->mod->m_func) {
b_queue_entry *entry = b_queue_first(&ctx->mod->m_func);
while (entry) {
struct mie_value *func_v
= b_unbox(struct mie_value, it.entry, v_entry);
= b_unbox(struct mie_value, entry, v_entry);
struct mie_func *func = (struct mie_func *)func_v;
b_result result = build_func_isel_graph(ctx, func);
if (b_result_is_error(result)) {
return b_result_propagate(result);
}
entry = b_queue_next(entry);
}
return B_RESULT_SUCCESS;

View File

@@ -1,7 +1,7 @@
#include "cmd.h"
#include <blue/cmd.h>
#include <blue/object/string.h>
#include <blue/ds/string.h>
#include <blue/term.h>
#include <ctype.h>
#include <errno.h>