summaryrefslogtreecommitdiff
path: root/src/apply-names.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/apply-names.cc')
-rw-r--r--src/apply-names.cc57
1 files changed, 26 insertions, 31 deletions
diff --git a/src/apply-names.cc b/src/apply-names.cc
index c2dabe40..e3bfc964 100644
--- a/src/apply-names.cc
+++ b/src/apply-names.cc
@@ -19,6 +19,8 @@
#include <assert.h>
#include <stdio.h>
+#include <vector>
+
#include "ast.h"
#define CHECK_RESULT(expr) \
@@ -31,9 +33,6 @@ namespace wabt {
namespace {
-typedef Label* LabelPtr;
-WABT_DEFINE_VECTOR(label_ptr, LabelPtr);
-
struct Context {
Context();
@@ -43,35 +42,33 @@ struct Context {
/* mapping from param index to its name, if any, for the current func */
std::vector<std::string> param_index_to_name;
std::vector<std::string> local_index_to_name;
- LabelPtrVector labels;
+ std::vector<Label*> labels;
};
Context::Context() {
WABT_ZERO_MEMORY(visitor);
- WABT_ZERO_MEMORY(labels);
}
void push_label(Context* ctx, Label* label) {
- append_label_ptr_value(&ctx->labels, &label);
+ ctx->labels.push_back(label);
}
void pop_label(Context* ctx) {
- assert(ctx->labels.size > 0);
- ctx->labels.size--;
+ ctx->labels.pop_back();
}
Label* find_label_by_var(Context* ctx, Var* var) {
if (var->type == VarType::Name) {
- for (int i = ctx->labels.size - 1; i >= 0; --i) {
- Label* label = ctx->labels.data[i];
+ for (int i = ctx->labels.size() - 1; i >= 0; --i) {
+ Label* label = ctx->labels[i];
if (string_slices_are_equal(label, &var->name))
return label;
}
return nullptr;
} else {
- if (var->index < 0 || static_cast<size_t>(var->index) >= ctx->labels.size)
+ if (var->index < 0 || static_cast<size_t>(var->index) >= ctx->labels.size())
return nullptr;
- return ctx->labels.data[ctx->labels.size - 1 - var->index];
+ return ctx->labels[ctx->labels.size() - 1 - var->index];
}
}
@@ -160,7 +157,7 @@ Result use_name_for_param_and_local_var(Context* ctx, Func* func, Var* var) {
Result begin_block_expr(Expr* expr, void* user_data) {
Context* ctx = static_cast<Context*>(user_data);
- push_label(ctx, &expr->block.label);
+ push_label(ctx, &expr->block->label);
return Result::Ok;
}
@@ -172,7 +169,7 @@ Result end_block_expr(Expr* expr, void* user_data) {
Result begin_loop_expr(Expr* expr, void* user_data) {
Context* ctx = static_cast<Context*>(user_data);
- push_label(ctx, &expr->loop.label);
+ push_label(ctx, &expr->loop->label);
return Result::Ok;
}
@@ -198,11 +195,10 @@ Result on_br_if_expr(Expr* expr, void* user_data) {
Result on_br_table_expr(Expr* expr, void* user_data) {
Context* ctx = static_cast<Context*>(user_data);
- VarVector* targets = &expr->br_table.targets;
- for (size_t i = 0; i < targets->size; ++i) {
- Var* target = &targets->data[i];
- Label* label = find_label_by_var(ctx, target);
- use_name_for_var(label, target);
+ VarVector& targets = *expr->br_table.targets;
+ for (Var& target : targets) {
+ Label* label = find_label_by_var(ctx, &target);
+ use_name_for_var(label, &target);
}
Label* label = find_label_by_var(ctx, &expr->br_table.default_target);
@@ -238,7 +234,7 @@ Result on_get_local_expr(Expr* expr, void* user_data) {
Result begin_if_expr(Expr* expr, void* user_data) {
Context* ctx = static_cast<Context*>(user_data);
- push_label(ctx, &expr->if_.true_.label);
+ push_label(ctx, &expr->if_.true_->label);
return Result::Ok;
}
@@ -297,8 +293,8 @@ Result visit_elem_segment(Context* ctx,
uint32_t elem_segment_index,
ElemSegment* segment) {
CHECK_RESULT(use_name_for_table_var(ctx->module, &segment->table_var));
- for (size_t i = 0; i < segment->vars.size; ++i) {
- CHECK_RESULT(use_name_for_func_var(ctx->module, &segment->vars.data[i]));
+ for (Var& var : segment->vars) {
+ CHECK_RESULT(use_name_for_func_var(ctx->module, &var));
}
return Result::Ok;
}
@@ -311,14 +307,14 @@ Result visit_data_segment(Context* ctx,
}
Result visit_module(Context* ctx, Module* module) {
- for (size_t i = 0; i < module->funcs.size; ++i)
- CHECK_RESULT(visit_func(ctx, i, module->funcs.data[i]));
- for (size_t i = 0; i < module->exports.size; ++i)
- CHECK_RESULT(visit_export(ctx, i, module->exports.data[i]));
- for (size_t i = 0; i < module->elem_segments.size; ++i)
- CHECK_RESULT(visit_elem_segment(ctx, i, module->elem_segments.data[i]));
- for (size_t i = 0; i < module->data_segments.size; ++i)
- CHECK_RESULT(visit_data_segment(ctx, i, module->data_segments.data[i]));
+ for (size_t i = 0; i < module->funcs.size(); ++i)
+ CHECK_RESULT(visit_func(ctx, i, module->funcs[i]));
+ for (size_t i = 0; i < module->exports.size(); ++i)
+ CHECK_RESULT(visit_export(ctx, i, module->exports[i]));
+ for (size_t i = 0; i < module->elem_segments.size(); ++i)
+ CHECK_RESULT(visit_elem_segment(ctx, i, module->elem_segments[i]));
+ for (size_t i = 0; i < module->data_segments.size(); ++i)
+ CHECK_RESULT(visit_data_segment(ctx, i, module->data_segments[i]));
return Result::Ok;
}
@@ -345,7 +341,6 @@ Result apply_names(Module* module) {
ctx.visitor.on_set_local_expr = on_set_local_expr;
ctx.visitor.on_tee_local_expr = on_tee_local_expr;
Result result = visit_module(&ctx, module);
- destroy_label_ptr_vector(&ctx.labels);
return result;
}