diff options
-rw-r--r-- | src/wasm-ast.c | 82 | ||||
-rw-r--r-- | src/wasm-ast.h | 6 | ||||
-rw-r--r-- | src/wasm-mark-used-blocks.c | 22 |
3 files changed, 55 insertions, 55 deletions
diff --git a/src/wasm-ast.c b/src/wasm-ast.c index e07b9c02..1420196d 100644 --- a/src/wasm-ast.c +++ b/src/wasm-ast.c @@ -644,74 +644,74 @@ void wasm_destroy_script(WasmScript* script) { return WASM_ERROR; \ } while (0) -#define CALLBACK(member) \ - CHECK_RESULT((traverser)->member \ - ? (traverser)->member(expr, (traverser)->user_data) \ +#define CALLBACK(member) \ + CHECK_RESULT((visitor)->member \ + ? (visitor)->member(expr, (visitor)->user_data) \ : WASM_OK) -static WasmResult traverse_expr(WasmExpr* expr, WasmExprTraverser* traverser); +static WasmResult visit_expr(WasmExpr* expr, WasmExprVisitor* visitor); -static WasmResult traverse_exprs(WasmExprPtrVector* exprs, - WasmExprTraverser* traverser) { +static WasmResult visit_exprs(WasmExprPtrVector* exprs, + WasmExprVisitor* visitor) { size_t i; for (i = 0; i < exprs->size; ++i) - CHECK_RESULT(traverse_expr(exprs->data[i], traverser)); + CHECK_RESULT(visit_expr(exprs->data[i], visitor)); return WASM_OK; } -static WasmResult traverse_expr(WasmExpr* expr, WasmExprTraverser* traverser) { +static WasmResult visit_expr(WasmExpr* expr, WasmExprVisitor* visitor) { switch (expr->type) { case WASM_EXPR_TYPE_BINARY: CALLBACK(begin_binary_expr); - CHECK_RESULT(traverse_expr(expr->binary.left, traverser)); - CHECK_RESULT(traverse_expr(expr->binary.right, traverser)); + CHECK_RESULT(visit_expr(expr->binary.left, visitor)); + CHECK_RESULT(visit_expr(expr->binary.right, visitor)); CALLBACK(end_binary_expr); break; case WASM_EXPR_TYPE_BLOCK: CALLBACK(begin_block_expr); - CHECK_RESULT(traverse_exprs(&expr->block.exprs, traverser)); + CHECK_RESULT(visit_exprs(&expr->block.exprs, visitor)); CALLBACK(end_block_expr); break; case WASM_EXPR_TYPE_BR: CALLBACK(begin_br_expr); if (expr->br.expr) - CHECK_RESULT(traverse_expr(expr->br.expr, traverser)); + CHECK_RESULT(visit_expr(expr->br.expr, visitor)); CALLBACK(end_br_expr); break; case WASM_EXPR_TYPE_BR_IF: CALLBACK(begin_br_if_expr); if (expr->br_if.expr) - CHECK_RESULT(traverse_expr(expr->br_if.expr, traverser)); - CHECK_RESULT(traverse_expr(expr->br_if.cond, traverser)); + CHECK_RESULT(visit_expr(expr->br_if.expr, visitor)); + CHECK_RESULT(visit_expr(expr->br_if.cond, visitor)); CALLBACK(end_br_if_expr); break; case WASM_EXPR_TYPE_CALL: CALLBACK(begin_call_expr); - CHECK_RESULT(traverse_exprs(&expr->call.args, traverser)); + CHECK_RESULT(visit_exprs(&expr->call.args, visitor)); CALLBACK(end_call_expr); break; case WASM_EXPR_TYPE_CALL_IMPORT: CALLBACK(begin_call_import_expr); - CHECK_RESULT(traverse_exprs(&expr->call.args, traverser)); + CHECK_RESULT(visit_exprs(&expr->call.args, visitor)); CALLBACK(end_call_import_expr); break; case WASM_EXPR_TYPE_CALL_INDIRECT: CALLBACK(begin_call_indirect_expr); - CHECK_RESULT(traverse_expr(expr->call_indirect.expr, traverser)); - CHECK_RESULT(traverse_exprs(&expr->call_indirect.args, traverser)); + CHECK_RESULT(visit_expr(expr->call_indirect.expr, visitor)); + CHECK_RESULT(visit_exprs(&expr->call_indirect.args, visitor)); CALLBACK(end_call_indirect_expr); break; case WASM_EXPR_TYPE_COMPARE: CALLBACK(begin_compare_expr); - CHECK_RESULT(traverse_expr(expr->compare.left, traverser)); - CHECK_RESULT(traverse_expr(expr->compare.right, traverser)); + CHECK_RESULT(visit_expr(expr->compare.left, visitor)); + CHECK_RESULT(visit_expr(expr->compare.right, visitor)); CALLBACK(end_compare_expr); break; @@ -721,7 +721,7 @@ static WasmResult traverse_expr(WasmExpr* expr, WasmExprTraverser* traverser) { case WASM_EXPR_TYPE_CONVERT: CALLBACK(begin_convert_expr); - CHECK_RESULT(traverse_expr(expr->convert.expr, traverser)); + CHECK_RESULT(visit_expr(expr->convert.expr, visitor)); CALLBACK(end_convert_expr); break; @@ -731,34 +731,34 @@ static WasmResult traverse_expr(WasmExpr* expr, WasmExprTraverser* traverser) { case WASM_EXPR_TYPE_GROW_MEMORY: CALLBACK(begin_grow_memory_expr); - CHECK_RESULT(traverse_expr(expr->grow_memory.expr, traverser)); + CHECK_RESULT(visit_expr(expr->grow_memory.expr, visitor)); CALLBACK(end_grow_memory_expr); break; case WASM_EXPR_TYPE_IF: CALLBACK(begin_if_expr); - CHECK_RESULT(traverse_expr(expr->if_.cond, traverser)); - CHECK_RESULT(traverse_expr(expr->if_.true_, traverser)); + CHECK_RESULT(visit_expr(expr->if_.cond, visitor)); + CHECK_RESULT(visit_expr(expr->if_.true_, visitor)); CALLBACK(end_if_expr); break; case WASM_EXPR_TYPE_IF_ELSE: CALLBACK(begin_if_else_expr); - CHECK_RESULT(traverse_expr(expr->if_else.cond, traverser)); - CHECK_RESULT(traverse_expr(expr->if_else.true_, traverser)); - CHECK_RESULT(traverse_expr(expr->if_else.false_, traverser)); + CHECK_RESULT(visit_expr(expr->if_else.cond, visitor)); + CHECK_RESULT(visit_expr(expr->if_else.true_, visitor)); + CHECK_RESULT(visit_expr(expr->if_else.false_, visitor)); CALLBACK(end_if_else_expr); break; case WASM_EXPR_TYPE_LOAD: CALLBACK(begin_load_expr); - CHECK_RESULT(traverse_expr(expr->load.addr, traverser)); + CHECK_RESULT(visit_expr(expr->load.addr, visitor)); CALLBACK(end_load_expr); break; case WASM_EXPR_TYPE_LOOP: CALLBACK(begin_loop_expr); - CHECK_RESULT(traverse_exprs(&expr->loop.exprs, traverser)); + CHECK_RESULT(visit_exprs(&expr->loop.exprs, visitor)); CALLBACK(end_loop_expr); break; @@ -773,40 +773,40 @@ static WasmResult traverse_expr(WasmExpr* expr, WasmExprTraverser* traverser) { case WASM_EXPR_TYPE_RETURN: CALLBACK(begin_return_expr); if (expr->return_.expr) - CHECK_RESULT(traverse_expr(expr->return_.expr, traverser)); + CHECK_RESULT(visit_expr(expr->return_.expr, visitor)); CALLBACK(end_return_expr); break; case WASM_EXPR_TYPE_SELECT: CALLBACK(begin_select_expr); - CHECK_RESULT(traverse_expr(expr->select.true_, traverser)); - CHECK_RESULT(traverse_expr(expr->select.false_, traverser)); - CHECK_RESULT(traverse_expr(expr->select.cond, traverser)); + CHECK_RESULT(visit_expr(expr->select.true_, visitor)); + CHECK_RESULT(visit_expr(expr->select.false_, visitor)); + CHECK_RESULT(visit_expr(expr->select.cond, visitor)); CALLBACK(end_select_expr); break; case WASM_EXPR_TYPE_SET_LOCAL: CALLBACK(begin_set_local_expr); - CHECK_RESULT(traverse_expr(expr->set_local.expr, traverser)); + CHECK_RESULT(visit_expr(expr->set_local.expr, visitor)); CALLBACK(end_set_local_expr); break; case WASM_EXPR_TYPE_STORE: CALLBACK(begin_store_expr); - CHECK_RESULT(traverse_expr(expr->store.addr, traverser)); - CHECK_RESULT(traverse_expr(expr->store.value, traverser)); + CHECK_RESULT(visit_expr(expr->store.addr, visitor)); + CHECK_RESULT(visit_expr(expr->store.value, visitor)); CALLBACK(end_store_expr); break; case WASM_EXPR_TYPE_BR_TABLE: CALLBACK(begin_br_table_expr); - CHECK_RESULT(traverse_expr(expr->br_table.expr, traverser)); + CHECK_RESULT(visit_expr(expr->br_table.expr, visitor)); CALLBACK(end_br_table_expr); break; case WASM_EXPR_TYPE_UNARY: CALLBACK(begin_unary_expr); - CHECK_RESULT(traverse_expr(expr->unary.expr, traverser)); + CHECK_RESULT(visit_expr(expr->unary.expr, visitor)); CALLBACK(end_unary_expr); break; @@ -818,7 +818,7 @@ static WasmResult traverse_expr(WasmExpr* expr, WasmExprTraverser* traverser) { return WASM_OK; } -/* TODO(binji): make the traverser non-recursive */ -WasmResult wasm_traverse_func(WasmFunc* func, WasmExprTraverser* traverser) { - return traverse_exprs(&func->exprs, traverser); +/* TODO(binji): make the visitor non-recursive */ +WasmResult wasm_visit_func(WasmFunc* func, WasmExprVisitor* visitor) { + return visit_exprs(&func->exprs, visitor); } diff --git a/src/wasm-ast.h b/src/wasm-ast.h index 6217b7f8..d7faad6e 100644 --- a/src/wasm-ast.h +++ b/src/wasm-ast.h @@ -343,7 +343,7 @@ typedef struct WasmScript { WasmCommandVector commands; } WasmScript; -typedef struct WasmExprTraverser { +typedef struct WasmExprVisitor { void* user_data; WasmResult (*begin_binary_expr)(WasmExpr*, void* user_data); WasmResult (*end_binary_expr)(WasmExpr*, void* user_data); @@ -390,7 +390,7 @@ typedef struct WasmExprTraverser { WasmResult (*begin_unary_expr)(WasmExpr*, void* user_data); WasmResult (*end_unary_expr)(WasmExpr*, void* user_data); WasmResult (*on_unreachable_expr)(WasmExpr*, void* user_data); -} WasmExprTraverser; +} WasmExprVisitor; WASM_EXTERN_C_BEGIN WasmBinding* wasm_insert_binding(struct WasmAllocator*, @@ -452,7 +452,7 @@ void wasm_destroy_var_vector_and_elements(struct WasmAllocator*, void wasm_destroy_var(struct WasmAllocator*, WasmVar*); /* traversal functions */ -WasmResult wasm_traverse_func(WasmFunc* func, WasmExprTraverser*); +WasmResult wasm_visit_func(WasmFunc* func, WasmExprVisitor*); /* convenience functions for looking through the AST */ int wasm_get_index_from_var(const WasmBindingHash* bindings, diff --git a/src/wasm-mark-used-blocks.c b/src/wasm-mark-used-blocks.c index 37a887a1..8ebda960 100644 --- a/src/wasm-mark-used-blocks.c +++ b/src/wasm-mark-used-blocks.c @@ -150,16 +150,16 @@ WasmResult wasm_mark_used_blocks(WasmAllocator* allocator, WasmScript* script) { WASM_ZERO_MEMORY(ctx); ctx.allocator = allocator; - WasmExprTraverser traverser; - WASM_ZERO_MEMORY(traverser); - traverser.user_data = &ctx; - traverser.begin_block_expr = &begin_block_expr; - traverser.end_block_expr = &end_block_expr; - traverser.begin_loop_expr = &begin_loop_expr; - traverser.end_loop_expr = &end_loop_expr; - traverser.begin_br_expr = &begin_br_expr; - traverser.begin_br_if_expr = &begin_br_if_expr; - traverser.begin_br_table_expr = &begin_br_table_expr; + WasmExprVisitor visitor; + WASM_ZERO_MEMORY(visitor); + visitor.user_data = &ctx; + visitor.begin_block_expr = &begin_block_expr; + visitor.end_block_expr = &end_block_expr; + visitor.begin_loop_expr = &begin_loop_expr; + visitor.end_loop_expr = &end_loop_expr; + visitor.begin_br_expr = &begin_br_expr; + visitor.begin_br_if_expr = &begin_br_if_expr; + visitor.begin_br_table_expr = &begin_br_table_expr; size_t i; for (i = 0; i < script->commands.size; ++i) { @@ -171,7 +171,7 @@ WasmResult wasm_mark_used_blocks(WasmAllocator* allocator, WasmScript* script) { for (j = 0; j < module->funcs.size; ++j) { WasmFunc* func = module->funcs.data[j]; ctx.current_func = func; - CHECK_RESULT(wasm_traverse_func(func, &traverser)); + CHECK_RESULT(wasm_visit_func(func, &visitor)); ctx.current_func = NULL; } } |