mie: update bluelib api usage
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#include "builder.h"
|
||||
|
||||
#include <blue/object/hashmap.h>
|
||||
#include <blue/ds/hashmap.h>
|
||||
#include <mie/ctx.h>
|
||||
#include <mie/ir/const.h>
|
||||
#include <mie/ir/data.h>
|
||||
@@ -51,7 +51,7 @@ struct mie_select_builder *mie_select_builder_create(
|
||||
|
||||
out->b_mem_access = b_hashmap_create(NULL, NULL);
|
||||
if (!out->b_mem_access) {
|
||||
b_hashmap_release(out->b_nodes);
|
||||
b_hashmap_unref(out->b_nodes);
|
||||
mie_select_graph_destroy(out->b_graph);
|
||||
free(out);
|
||||
return NULL;
|
||||
@@ -63,11 +63,11 @@ struct mie_select_builder *mie_select_builder_create(
|
||||
void mie_select_builder_destroy(struct mie_select_builder *builder)
|
||||
{
|
||||
if (builder->b_nodes) {
|
||||
b_hashmap_release(builder->b_nodes);
|
||||
b_hashmap_unref(builder->b_nodes);
|
||||
}
|
||||
|
||||
if (builder->b_mem_access) {
|
||||
b_hashmap_release(builder->b_mem_access);
|
||||
b_hashmap_unref(builder->b_mem_access);
|
||||
}
|
||||
|
||||
if (builder->b_graph) {
|
||||
@@ -96,12 +96,14 @@ const struct mie_target *mie_select_builder_get_target(
|
||||
|
||||
static void clear_node_map(struct mie_select_builder *builder)
|
||||
{
|
||||
b_hashmap_iterator it;
|
||||
b_hashmap_iterator_begin(builder->b_nodes, &it);
|
||||
while (b_hashmap_iterator_is_valid(&it)) {
|
||||
free(it.value->value_data);
|
||||
b_hashmap_iterator_erase(&it);
|
||||
b_iterator *it = b_iterator_begin(builder->b_nodes);
|
||||
while (b_iterator_is_valid(it)) {
|
||||
b_hashmap_item *item = b_iterator_get_value(it).v_ptr;
|
||||
free(item->value.value_data);
|
||||
b_iterator_erase(it);
|
||||
}
|
||||
|
||||
b_iterator_unref(it);
|
||||
}
|
||||
|
||||
struct mie_select_graph *mie_select_builder_finish(struct mie_select_builder *builder)
|
||||
@@ -142,28 +144,30 @@ enum mie_status mie_select_builder_get_const(
|
||||
struct mie_type *ctype = mie_ctx_get_int_type(builder->b_ctx, 32);
|
||||
struct mie_select_node *node = NULL;
|
||||
|
||||
b_queue_iterator it;
|
||||
b_queue_foreach (&it, &builder->b_graph->g_nodes) {
|
||||
node = b_unbox(struct mie_select_node, it.entry, n_entry);
|
||||
b_queue_entry *entry = b_queue_first(&builder->b_graph->g_nodes);
|
||||
while (entry) {
|
||||
node = b_unbox(struct mie_select_node, entry, n_entry);
|
||||
|
||||
if (node->n_target != builtin) {
|
||||
continue;
|
||||
goto skip;
|
||||
}
|
||||
|
||||
if (node->n_opcode != MIE_SELECT_OP_CONSTANT) {
|
||||
continue;
|
||||
goto skip;
|
||||
}
|
||||
|
||||
if (!(node->n_flags & MIE_SELECT_NODE_F_IVALUE)) {
|
||||
continue;
|
||||
goto skip;
|
||||
}
|
||||
|
||||
if (node->n_value.i != value) {
|
||||
continue;
|
||||
goto skip;
|
||||
}
|
||||
|
||||
mie_select_node_get_value(node, ctype, 0, out);
|
||||
return MIE_SUCCESS;
|
||||
skip:
|
||||
entry = b_queue_next(entry);
|
||||
}
|
||||
|
||||
enum mie_status status = mie_select_graph_get_node(
|
||||
@@ -368,15 +372,17 @@ struct mie_select_node *mie_select_builder_find_node_with_ivalue(
|
||||
struct mie_select_builder *builder, const struct mie_target *target,
|
||||
unsigned int opcode, long long val)
|
||||
{
|
||||
b_queue_iterator it;
|
||||
b_queue_foreach (&it, &builder->b_graph->g_nodes) {
|
||||
b_queue_entry *entry = b_queue_first(&builder->b_graph->g_nodes);
|
||||
while (entry) {
|
||||
struct mie_select_node *node
|
||||
= b_unbox(struct mie_select_node, it.entry, n_entry);
|
||||
= b_unbox(struct mie_select_node, entry, n_entry);
|
||||
|
||||
if (node->n_target == target && node->n_opcode == opcode
|
||||
&& node->n_value.i == val) {
|
||||
return node;
|
||||
}
|
||||
|
||||
entry = b_queue_next(entry);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user