summaryrefslogtreecommitdiff
path: root/src/ast.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast.c')
-rw-r--r--src/ast.c378
1 files changed, 166 insertions, 212 deletions
diff --git a/src/ast.c b/src/ast.c
index 3c3d4c7a..0a7b200b 100644
--- a/src/ast.c
+++ b/src/ast.c
@@ -19,8 +19,6 @@
#include <assert.h>
#include <stddef.h>
-#include "allocator.h"
-
int wabt_get_index_from_var(const WabtBindingHash* hash, const WabtVar* var) {
if (var->type == WABT_VAR_TYPE_NAME)
return wabt_find_binding_index_by_name(hash, &var->name);
@@ -155,12 +153,11 @@ WabtModule* wabt_get_module_by_var(const WabtScript* script,
}
void wabt_make_type_binding_reverse_mapping(
- struct WabtAllocator* allocator,
const WabtTypeVector* types,
const WabtBindingHash* bindings,
WabtStringSliceVector* out_reverse_mapping) {
uint32_t num_names = types->size;
- wabt_reserve_string_slices(allocator, out_reverse_mapping, num_names);
+ wabt_reserve_string_slices(out_reverse_mapping, num_names);
out_reverse_mapping->size = num_names;
memset(out_reverse_mapping->data, 0, num_names * sizeof(WabtStringSlice));
@@ -201,10 +198,8 @@ void wabt_find_duplicate_bindings(const WabtBindingHash* bindings,
}
}
-WabtModuleField* wabt_append_module_field(struct WabtAllocator* allocator,
- WabtModule* module) {
- WabtModuleField* result =
- wabt_alloc_zero(allocator, sizeof(WabtModuleField), WABT_DEFAULT_ALIGN);
+WabtModuleField* wabt_append_module_field(WabtModule* module) {
+ WabtModuleField* result = wabt_alloc_zero(sizeof(WabtModuleField));
if (!module->first_field)
module->first_field = result;
else if (module->last_field)
@@ -213,58 +208,40 @@ WabtModuleField* wabt_append_module_field(struct WabtAllocator* allocator,
return result;
}
-WabtFuncType* wabt_append_implicit_func_type(struct WabtAllocator* allocator,
- WabtLocation* loc,
+WabtFuncType* wabt_append_implicit_func_type(WabtLocation* loc,
WabtModule* module,
WabtFuncSignature* sig) {
- WabtModuleField* field = wabt_append_module_field(allocator, module);
+ WabtModuleField* field = wabt_append_module_field(module);
field->loc = *loc;
field->type = WABT_MODULE_FIELD_TYPE_FUNC_TYPE;
field->func_type.sig = *sig;
WabtFuncType* func_type_ptr = &field->func_type;
- wabt_append_func_type_ptr_value(allocator, &module->func_types,
- &func_type_ptr);
+ wabt_append_func_type_ptr_value(&module->func_types, &func_type_ptr);
return func_type_ptr;
}
-#define ALLOC_EXPR_TYPE_ZERO(allocator, member) \
- wabt_alloc_zero(allocator, \
- offsetof(WabtExpr, member) + sizeof(((WabtExpr*)0)->member), \
- WABT_DEFAULT_ALIGN)
-
-#define FOREACH_EXPR_TYPE(V) \
- V(WABT_EXPR_TYPE_BINARY, binary, binary) \
- V(WABT_EXPR_TYPE_BLOCK, block, block) \
- V(WABT_EXPR_TYPE_BR, br, br) \
- V(WABT_EXPR_TYPE_BR_IF, br_if, br_if) \
- V(WABT_EXPR_TYPE_BR_TABLE, br_table, br_table) \
- V(WABT_EXPR_TYPE_CALL, call, call) \
- V(WABT_EXPR_TYPE_CALL_INDIRECT, call_indirect, call_indirect) \
- V(WABT_EXPR_TYPE_COMPARE, compare, compare) \
- V(WABT_EXPR_TYPE_CONST, const, const_) \
- V(WABT_EXPR_TYPE_CONVERT, convert, convert) \
- V(WABT_EXPR_TYPE_GET_GLOBAL, get_global, get_global) \
- V(WABT_EXPR_TYPE_GET_LOCAL, get_local, get_local) \
- V(WABT_EXPR_TYPE_IF, if, if_) \
- V(WABT_EXPR_TYPE_LOAD, load, load) \
- V(WABT_EXPR_TYPE_LOOP, loop, loop) \
- V(WABT_EXPR_TYPE_SET_GLOBAL, set_global, set_global) \
- V(WABT_EXPR_TYPE_SET_LOCAL, set_local, set_local) \
- V(WABT_EXPR_TYPE_STORE, store, store) \
- V(WABT_EXPR_TYPE_TEE_LOCAL, tee_local, tee_local) \
- V(WABT_EXPR_TYPE_UNARY, unary, unary)
-
-#define DEFINE_NEW_EXPR(type_, name, member) \
- WabtExpr* wabt_new_##name##_expr(WabtAllocator* allocator) { \
- WabtExpr* result = ALLOC_EXPR_TYPE_ZERO(allocator, member); \
- result->type = type_; \
- return result; \
- }
-FOREACH_EXPR_TYPE(DEFINE_NEW_EXPR)
-#undef DEFINE_NEW_EXPR
-
-#define FOREACH_EMPTY_EXPR_TYPE(V) \
+#define FOREACH_EXPR_TYPE(V) \
+ V(WABT_EXPR_TYPE_BINARY, binary) \
+ V(WABT_EXPR_TYPE_BLOCK, block) \
+ V(WABT_EXPR_TYPE_BR, br) \
+ V(WABT_EXPR_TYPE_BR_IF, br_if) \
+ V(WABT_EXPR_TYPE_BR_TABLE, br_table) \
+ V(WABT_EXPR_TYPE_CALL, call) \
+ V(WABT_EXPR_TYPE_CALL_INDIRECT, call_indirect) \
+ V(WABT_EXPR_TYPE_COMPARE, compare) \
+ V(WABT_EXPR_TYPE_CONST, const) \
+ V(WABT_EXPR_TYPE_CONVERT, convert) \
+ V(WABT_EXPR_TYPE_GET_GLOBAL, get_global) \
+ V(WABT_EXPR_TYPE_GET_LOCAL, get_local) \
+ V(WABT_EXPR_TYPE_IF, if) \
+ V(WABT_EXPR_TYPE_LOAD, load) \
+ V(WABT_EXPR_TYPE_LOOP, loop) \
+ V(WABT_EXPR_TYPE_SET_GLOBAL, set_global) \
+ V(WABT_EXPR_TYPE_SET_LOCAL, set_local) \
+ V(WABT_EXPR_TYPE_STORE, store) \
+ V(WABT_EXPR_TYPE_TEE_LOCAL, tee_local) \
+ V(WABT_EXPR_TYPE_UNARY, unary) \
V(WABT_EXPR_TYPE_CURRENT_MEMORY, current_memory) \
V(WABT_EXPR_TYPE_DROP, drop) \
V(WABT_EXPR_TYPE_GROW_MEMORY, grow_memory) \
@@ -273,95 +250,86 @@ FOREACH_EXPR_TYPE(DEFINE_NEW_EXPR)
V(WABT_EXPR_TYPE_SELECT, select) \
V(WABT_EXPR_TYPE_UNREACHABLE, unreachable)
-#define DEFINE_NEW_EMPTY_EXPR(type_, name) \
- WabtExpr* wabt_new_##name##_expr(WabtAllocator* allocator) { \
- WabtExpr* result = ALLOC_EXPR_TYPE_ZERO(allocator, next); \
- result->type = type_; \
- return result; \
+#define DEFINE_NEW_EXPR(type_, name) \
+ WabtExpr* wabt_new_##name##_expr(void) { \
+ WabtExpr* result = wabt_alloc_zero(sizeof(WabtExpr)); \
+ result->type = type_; \
+ return result; \
}
-FOREACH_EMPTY_EXPR_TYPE(DEFINE_NEW_EMPTY_EXPR)
-#undef DEFINE_NEW_EMPTY_EXPR
-
-WabtExpr* wabt_new_empty_expr(struct WabtAllocator* allocator,
- WabtExprType type) {
- WabtExpr* result = ALLOC_EXPR_TYPE_ZERO(allocator, next);
- result->type = type;
- return result;
-}
+FOREACH_EXPR_TYPE(DEFINE_NEW_EXPR)
+#undef DEFINE_NEW_EXPR
-void wabt_destroy_var(WabtAllocator* allocator, WabtVar* var) {
+void wabt_destroy_var(WabtVar* var) {
if (var->type == WABT_VAR_TYPE_NAME)
- wabt_destroy_string_slice(allocator, &var->name);
+ wabt_destroy_string_slice(&var->name);
}
-void wabt_destroy_var_vector_and_elements(WabtAllocator* allocator,
- WabtVarVector* vars) {
- WABT_DESTROY_VECTOR_AND_ELEMENTS(allocator, *vars, var);
+void wabt_destroy_var_vector_and_elements(WabtVarVector* vars) {
+ WABT_DESTROY_VECTOR_AND_ELEMENTS(*vars, var);
}
-void wabt_destroy_func_signature(WabtAllocator* allocator,
- WabtFuncSignature* sig) {
- wabt_destroy_type_vector(allocator, &sig->param_types);
- wabt_destroy_type_vector(allocator, &sig->result_types);
+void wabt_destroy_func_signature(WabtFuncSignature* sig) {
+ wabt_destroy_type_vector(&sig->param_types);
+ wabt_destroy_type_vector(&sig->result_types);
}
-void wabt_destroy_expr_list(WabtAllocator* allocator, WabtExpr* first) {
+void wabt_destroy_expr_list(WabtExpr* first) {
WabtExpr* expr = first;
while (expr) {
WabtExpr* next = expr->next;
- wabt_destroy_expr(allocator, expr);
+ wabt_destroy_expr(expr);
expr = next;
}
}
-void wabt_destroy_block(WabtAllocator* allocator, WabtBlock* block) {
- wabt_destroy_string_slice(allocator, &block->label);
- wabt_destroy_type_vector(allocator, &block->sig);
- wabt_destroy_expr_list(allocator, block->first);
+void wabt_destroy_block(WabtBlock* block) {
+ wabt_destroy_string_slice(&block->label);
+ wabt_destroy_type_vector(&block->sig);
+ wabt_destroy_expr_list(block->first);
}
-void wabt_destroy_expr(WabtAllocator* allocator, WabtExpr* expr) {
+void wabt_destroy_expr(WabtExpr* expr) {
switch (expr->type) {
case WABT_EXPR_TYPE_BLOCK:
- wabt_destroy_block(allocator, &expr->block);
+ wabt_destroy_block(&expr->block);
break;
case WABT_EXPR_TYPE_BR:
- wabt_destroy_var(allocator, &expr->br.var);
+ wabt_destroy_var(&expr->br.var);
break;
case WABT_EXPR_TYPE_BR_IF:
- wabt_destroy_var(allocator, &expr->br_if.var);
+ wabt_destroy_var(&expr->br_if.var);
break;
case WABT_EXPR_TYPE_BR_TABLE:
- WABT_DESTROY_VECTOR_AND_ELEMENTS(allocator, expr->br_table.targets, var);
- wabt_destroy_var(allocator, &expr->br_table.default_target);
+ WABT_DESTROY_VECTOR_AND_ELEMENTS(expr->br_table.targets, var);
+ wabt_destroy_var(&expr->br_table.default_target);
break;
case WABT_EXPR_TYPE_CALL:
- wabt_destroy_var(allocator, &expr->call.var);
+ wabt_destroy_var(&expr->call.var);
break;
case WABT_EXPR_TYPE_CALL_INDIRECT:
- wabt_destroy_var(allocator, &expr->call_indirect.var);
+ wabt_destroy_var(&expr->call_indirect.var);
break;
case WABT_EXPR_TYPE_GET_GLOBAL:
- wabt_destroy_var(allocator, &expr->get_global.var);
+ wabt_destroy_var(&expr->get_global.var);
break;
case WABT_EXPR_TYPE_GET_LOCAL:
- wabt_destroy_var(allocator, &expr->get_local.var);
+ wabt_destroy_var(&expr->get_local.var);
break;
case WABT_EXPR_TYPE_IF:
- wabt_destroy_block(allocator, &expr->if_.true_);
- wabt_destroy_expr_list(allocator, expr->if_.false_);
+ wabt_destroy_block(&expr->if_.true_);
+ wabt_destroy_expr_list(expr->if_.false_);
break;
case WABT_EXPR_TYPE_LOOP:
- wabt_destroy_block(allocator, &expr->loop);
+ wabt_destroy_block(&expr->loop);
break;
case WABT_EXPR_TYPE_SET_GLOBAL:
- wabt_destroy_var(allocator, &expr->set_global.var);
+ wabt_destroy_var(&expr->set_global.var);
break;
case WABT_EXPR_TYPE_SET_LOCAL:
- wabt_destroy_var(allocator, &expr->set_local.var);
+ wabt_destroy_var(&expr->set_local.var);
break;
case WABT_EXPR_TYPE_TEE_LOCAL:
- wabt_destroy_var(allocator, &expr->tee_local.var);
+ wabt_destroy_var(&expr->tee_local.var);
break;
case WABT_EXPR_TYPE_BINARY:
@@ -380,45 +348,44 @@ void wabt_destroy_expr(WabtAllocator* allocator, WabtExpr* expr) {
case WABT_EXPR_TYPE_UNREACHABLE:
break;
}
- wabt_free(allocator, expr);
+ wabt_free(expr);
}
-void wabt_destroy_func_declaration(WabtAllocator* allocator,
- WabtFuncDeclaration* decl) {
- wabt_destroy_var(allocator, &decl->type_var);
+void wabt_destroy_func_declaration(WabtFuncDeclaration* decl) {
+ wabt_destroy_var(&decl->type_var);
if (!(decl->flags & WABT_FUNC_DECLARATION_FLAG_SHARED_SIGNATURE))
- wabt_destroy_func_signature(allocator, &decl->sig);
+ wabt_destroy_func_signature(&decl->sig);
}
-void wabt_destroy_func(WabtAllocator* allocator, WabtFunc* func) {
- wabt_destroy_string_slice(allocator, &func->name);
- wabt_destroy_func_declaration(allocator, &func->decl);
- wabt_destroy_type_vector(allocator, &func->local_types);
- wabt_destroy_binding_hash(allocator, &func->param_bindings);
- wabt_destroy_binding_hash(allocator, &func->local_bindings);
- wabt_destroy_expr_list(allocator, func->first_expr);
+void wabt_destroy_func(WabtFunc* func) {
+ wabt_destroy_string_slice(&func->name);
+ wabt_destroy_func_declaration(&func->decl);
+ wabt_destroy_type_vector(&func->local_types);
+ wabt_destroy_binding_hash(&func->param_bindings);
+ wabt_destroy_binding_hash(&func->local_bindings);
+ wabt_destroy_expr_list(func->first_expr);
}
-void wabt_destroy_global(WabtAllocator* allocator, WabtGlobal* global) {
- wabt_destroy_string_slice(allocator, &global->name);
- wabt_destroy_expr_list(allocator, global->init_expr);
+void wabt_destroy_global(WabtGlobal* global) {
+ wabt_destroy_string_slice(&global->name);
+ wabt_destroy_expr_list(global->init_expr);
}
-void wabt_destroy_import(WabtAllocator* allocator, WabtImport* import) {
- wabt_destroy_string_slice(allocator, &import->module_name);
- wabt_destroy_string_slice(allocator, &import->field_name);
+void wabt_destroy_import(WabtImport* import) {
+ wabt_destroy_string_slice(&import->module_name);
+ wabt_destroy_string_slice(&import->field_name);
switch (import->kind) {
case WABT_EXTERNAL_KIND_FUNC:
- wabt_destroy_func(allocator, &import->func);
+ wabt_destroy_func(&import->func);
break;
case WABT_EXTERNAL_KIND_TABLE:
- wabt_destroy_table(allocator, &import->table);
+ wabt_destroy_table(&import->table);
break;
case WABT_EXTERNAL_KIND_MEMORY:
- wabt_destroy_memory(allocator, &import->memory);
+ wabt_destroy_memory(&import->memory);
break;
case WABT_EXTERNAL_KIND_GLOBAL:
- wabt_destroy_global(allocator, &import->global);
+ wabt_destroy_global(&import->global);
break;
case WABT_NUM_EXTERNAL_KINDS:
assert(0);
@@ -426,168 +393,158 @@ void wabt_destroy_import(WabtAllocator* allocator, WabtImport* import) {
}
}
-void wabt_destroy_export(WabtAllocator* allocator, WabtExport* export) {
- wabt_destroy_string_slice(allocator, &export->name);
- wabt_destroy_var(allocator, &export->var);
+void wabt_destroy_export(WabtExport* export) {
+ wabt_destroy_string_slice(&export->name);
+ wabt_destroy_var(&export->var);
}
-void wabt_destroy_func_type(WabtAllocator* allocator, WabtFuncType* func_type) {
- wabt_destroy_string_slice(allocator, &func_type->name);
- wabt_destroy_func_signature(allocator, &func_type->sig);
+void wabt_destroy_func_type(WabtFuncType* func_type) {
+ wabt_destroy_string_slice(&func_type->name);
+ wabt_destroy_func_signature(&func_type->sig);
}
-void wabt_destroy_data_segment(WabtAllocator* allocator,
- WabtDataSegment* data) {
- wabt_destroy_var(allocator, &data->memory_var);
- wabt_destroy_expr_list(allocator, data->offset);
- wabt_free(allocator, data->data);
+void wabt_destroy_data_segment(WabtDataSegment* data) {
+ wabt_destroy_var(&data->memory_var);
+ wabt_destroy_expr_list(data->offset);
+ wabt_free(data->data);
}
-void wabt_destroy_memory(struct WabtAllocator* allocator, WabtMemory* memory) {
- wabt_destroy_string_slice(allocator, &memory->name);
+void wabt_destroy_memory(WabtMemory* memory) {
+ wabt_destroy_string_slice(&memory->name);
}
-void wabt_destroy_table(struct WabtAllocator* allocator, WabtTable* table) {
- wabt_destroy_string_slice(allocator, &table->name);
+void wabt_destroy_table(WabtTable* table) {
+ wabt_destroy_string_slice(&table->name);
}
-static void destroy_module_field(WabtAllocator* allocator,
- WabtModuleField* field) {
+static void destroy_module_field(WabtModuleField* field) {
switch (field->type) {
case WABT_MODULE_FIELD_TYPE_FUNC:
- wabt_destroy_func(allocator, &field->func);
+ wabt_destroy_func(&field->func);
break;
case WABT_MODULE_FIELD_TYPE_GLOBAL:
- wabt_destroy_global(allocator, &field->global);
+ wabt_destroy_global(&field->global);
break;
case WABT_MODULE_FIELD_TYPE_IMPORT:
- wabt_destroy_import(allocator, &field->import);
+ wabt_destroy_import(&field->import);
break;
case WABT_MODULE_FIELD_TYPE_EXPORT:
- wabt_destroy_export(allocator, &field->export_);
+ wabt_destroy_export(&field->export_);
break;
case WABT_MODULE_FIELD_TYPE_FUNC_TYPE:
- wabt_destroy_func_type(allocator, &field->func_type);
+ wabt_destroy_func_type(&field->func_type);
break;
case WABT_MODULE_FIELD_TYPE_TABLE:
- wabt_destroy_table(allocator, &field->table);
+ wabt_destroy_table(&field->table);
break;
case WABT_MODULE_FIELD_TYPE_ELEM_SEGMENT:
- wabt_destroy_elem_segment(allocator, &field->elem_segment);
+ wabt_destroy_elem_segment(&field->elem_segment);
break;
case WABT_MODULE_FIELD_TYPE_MEMORY:
- wabt_destroy_memory(allocator, &field->memory);
+ wabt_destroy_memory(&field->memory);
break;
case WABT_MODULE_FIELD_TYPE_DATA_SEGMENT:
- wabt_destroy_data_segment(allocator, &field->data_segment);
+ wabt_destroy_data_segment(&field->data_segment);
break;
case WABT_MODULE_FIELD_TYPE_START:
- wabt_destroy_var(allocator, &field->start);
+ wabt_destroy_var(&field->start);
break;
}
}
-void wabt_destroy_module(WabtAllocator* allocator, WabtModule* module) {
- wabt_destroy_string_slice(allocator, &module->name);
+void wabt_destroy_module(WabtModule* module) {
+ wabt_destroy_string_slice(&module->name);
WabtModuleField* field = module->first_field;
while (field != NULL) {
WabtModuleField* next_field = field->next;
- destroy_module_field(allocator, field);
- wabt_free(allocator, field);
+ destroy_module_field(field);
+ wabt_free(field);
field = next_field;
}
/* everything that follows shares data with the module fields above, so we
only need to destroy the containing vectors */
- wabt_destroy_func_ptr_vector(allocator, &module->funcs);
- wabt_destroy_global_ptr_vector(allocator, &module->globals);
- wabt_destroy_import_ptr_vector(allocator, &module->imports);
- wabt_destroy_export_ptr_vector(allocator, &module->exports);
- wabt_destroy_func_type_ptr_vector(allocator, &module->func_types);
- wabt_destroy_table_ptr_vector(allocator, &module->tables);
- wabt_destroy_elem_segment_ptr_vector(allocator, &module->elem_segments);
- wabt_destroy_memory_ptr_vector(allocator, &module->memories);
- wabt_destroy_data_segment_ptr_vector(allocator, &module->data_segments);
- wabt_destroy_binding_hash_entry_vector(allocator,
- &module->func_bindings.entries);
- wabt_destroy_binding_hash_entry_vector(allocator,
- &module->global_bindings.entries);
- wabt_destroy_binding_hash_entry_vector(allocator,
- &module->export_bindings.entries);
- wabt_destroy_binding_hash_entry_vector(allocator,
- &module->func_type_bindings.entries);
- wabt_destroy_binding_hash_entry_vector(allocator,
- &module->table_bindings.entries);
- wabt_destroy_binding_hash_entry_vector(allocator,
- &module->memory_bindings.entries);
-}
-
-void wabt_destroy_raw_module(WabtAllocator* allocator, WabtRawModule* raw) {
+ wabt_destroy_func_ptr_vector(&module->funcs);
+ wabt_destroy_global_ptr_vector(&module->globals);
+ wabt_destroy_import_ptr_vector(&module->imports);
+ wabt_destroy_export_ptr_vector(&module->exports);
+ wabt_destroy_func_type_ptr_vector(&module->func_types);
+ wabt_destroy_table_ptr_vector(&module->tables);
+ wabt_destroy_elem_segment_ptr_vector(&module->elem_segments);
+ wabt_destroy_memory_ptr_vector(&module->memories);
+ wabt_destroy_data_segment_ptr_vector(&module->data_segments);
+ wabt_destroy_binding_hash_entry_vector(&module->func_bindings.entries);
+ wabt_destroy_binding_hash_entry_vector(&module->global_bindings.entries);
+ wabt_destroy_binding_hash_entry_vector(&module->export_bindings.entries);
+ wabt_destroy_binding_hash_entry_vector(&module->func_type_bindings.entries);
+ wabt_destroy_binding_hash_entry_vector(&module->table_bindings.entries);
+ wabt_destroy_binding_hash_entry_vector(&module->memory_bindings.entries);
+}
+
+void wabt_destroy_raw_module(WabtRawModule* raw) {
if (raw->type == WABT_RAW_MODULE_TYPE_TEXT) {
- wabt_destroy_module(allocator, raw->text);
- wabt_free(allocator, raw->text);
+ wabt_destroy_module(raw->text);
+ wabt_free(raw->text);
} else {
- wabt_destroy_string_slice(allocator, &raw->binary.name);
- wabt_free(allocator, raw->binary.data);
+ wabt_destroy_string_slice(&raw->binary.name);
+ wabt_free(raw->binary.data);
}
}
-void wabt_destroy_action(WabtAllocator* allocator, WabtAction* action) {
- wabt_destroy_var(allocator, &action->module_var);
+void wabt_destroy_action(WabtAction* action) {
+ wabt_destroy_var(&action->module_var);
switch (action->type) {
case WABT_ACTION_TYPE_INVOKE:
- wabt_destroy_string_slice(allocator, &action->invoke.name);
- wabt_destroy_const_vector(allocator, &action->invoke.args);
+ wabt_destroy_string_slice(&action->invoke.name);
+ wabt_destroy_const_vector(&action->invoke.args);
break;
case WABT_ACTION_TYPE_GET:
- wabt_destroy_string_slice(allocator, &action->get.name);
+ wabt_destroy_string_slice(&action->get.name);
break;
}
}
-void wabt_destroy_command(WabtAllocator* allocator, WabtCommand* command) {
+void wabt_destroy_command(WabtCommand* command) {
switch (command->type) {
case WABT_COMMAND_TYPE_MODULE:
- wabt_destroy_module(allocator, &command->module);
+ wabt_destroy_module(&command->module);
break;
case WABT_COMMAND_TYPE_ACTION:
- wabt_destroy_action(allocator, &command->action);
+ wabt_destroy_action(&command->action);
break;
case WABT_COMMAND_TYPE_REGISTER:
- wabt_destroy_string_slice(allocator, &command->register_.module_name);
- wabt_destroy_var(allocator, &command->register_.var);
+ wabt_destroy_string_slice(&command->register_.module_name);
+ wabt_destroy_var(&command->register_.var);
break;
case WABT_COMMAND_TYPE_ASSERT_MALFORMED:
- wabt_destroy_raw_module(allocator, &command->assert_malformed.module);
- wabt_destroy_string_slice(allocator, &command->assert_malformed.text);
+ wabt_destroy_raw_module(&command->assert_malformed.module);
+ wabt_destroy_string_slice(&command->assert_malformed.text);
break;
case WABT_COMMAND_TYPE_ASSERT_INVALID:
case WABT_COMMAND_TYPE_ASSERT_INVALID_NON_BINARY:
- wabt_destroy_raw_module(allocator, &command->assert_invalid.module);
- wabt_destroy_string_slice(allocator, &command->assert_invalid.text);
+ wabt_destroy_raw_module(&command->assert_invalid.module);
+ wabt_destroy_string_slice(&command->assert_invalid.text);
break;
case WABT_COMMAND_TYPE_ASSERT_UNLINKABLE:
- wabt_destroy_raw_module(allocator, &command->assert_unlinkable.module);
- wabt_destroy_string_slice(allocator, &command->assert_unlinkable.text);
+ wabt_destroy_raw_module(&command->assert_unlinkable.module);
+ wabt_destroy_string_slice(&command->assert_unlinkable.text);
break;
case WABT_COMMAND_TYPE_ASSERT_UNINSTANTIABLE:
- wabt_destroy_raw_module(allocator,
- &command->assert_uninstantiable.module);
- wabt_destroy_string_slice(allocator,
- &command->assert_uninstantiable.text);
+ wabt_destroy_raw_module(&command->assert_uninstantiable.module);
+ wabt_destroy_string_slice(&command->assert_uninstantiable.text);
break;
case WABT_COMMAND_TYPE_ASSERT_RETURN:
- wabt_destroy_action(allocator, &command->assert_return.action);
- wabt_destroy_const_vector(allocator, &command->assert_return.expected);
+ wabt_destroy_action(&command->assert_return.action);
+ wabt_destroy_const_vector(&command->assert_return.expected);
break;
case WABT_COMMAND_TYPE_ASSERT_RETURN_NAN:
- wabt_destroy_action(allocator, &command->assert_return_nan.action);
+ wabt_destroy_action(&command->assert_return_nan.action);
break;
case WABT_COMMAND_TYPE_ASSERT_TRAP:
case WABT_COMMAND_TYPE_ASSERT_EXHAUSTION:
- wabt_destroy_action(allocator, &command->assert_trap.action);
- wabt_destroy_string_slice(allocator, &command->assert_trap.text);
+ wabt_destroy_action(&command->assert_trap.action);
+ wabt_destroy_string_slice(&command->assert_trap.text);
break;
case WABT_NUM_COMMAND_TYPES:
assert(0);
@@ -595,22 +552,19 @@ void wabt_destroy_command(WabtAllocator* allocator, WabtCommand* command) {
}
}
-void wabt_destroy_command_vector_and_elements(WabtAllocator* allocator,
- WabtCommandVector* commands) {
- WABT_DESTROY_VECTOR_AND_ELEMENTS(allocator, *commands, command);
+void wabt_destroy_command_vector_and_elements(WabtCommandVector* commands) {
+ WABT_DESTROY_VECTOR_AND_ELEMENTS(*commands, command);
}
-void wabt_destroy_elem_segment(WabtAllocator* allocator,
- WabtElemSegment* elem) {
- wabt_destroy_var(allocator, &elem->table_var);
- wabt_destroy_expr_list(allocator, elem->offset);
- WABT_DESTROY_VECTOR_AND_ELEMENTS(allocator, elem->vars, var);
+void wabt_destroy_elem_segment(WabtElemSegment* elem) {
+ wabt_destroy_var(&elem->table_var);
+ wabt_destroy_expr_list(elem->offset);
+ WABT_DESTROY_VECTOR_AND_ELEMENTS(elem->vars, var);
}
void wabt_destroy_script(WabtScript* script) {
- WABT_DESTROY_VECTOR_AND_ELEMENTS(script->allocator, script->commands,
- command);
- wabt_destroy_binding_hash(script->allocator, &script->module_bindings);
+ WABT_DESTROY_VECTOR_AND_ELEMENTS(script->commands, command);
+ wabt_destroy_binding_hash(&script->module_bindings);
}
#define CHECK_RESULT(expr) \