diff options
Diffstat (limited to 'src/ir.cc')
-rw-r--r-- | src/ir.cc | 146 |
1 files changed, 0 insertions, 146 deletions
@@ -744,150 +744,4 @@ Command::~Command() { Script::Script() {} -#define CHECK_RESULT(expr) \ - do { \ - if (WABT_FAILED((expr))) \ - return Result::Error; \ - } while (0) - -#define CALLBACK(member) \ - CHECK_RESULT((visitor)->member \ - ? (visitor)->member(expr, (visitor)->user_data) \ - : Result::Ok) - -static Result visit_expr(Expr* expr, ExprVisitor* visitor); - -Result visit_expr_list(Expr* first, ExprVisitor* visitor) { - for (Expr* expr = first; expr; expr = expr->next) - CHECK_RESULT(visit_expr(expr, visitor)); - return Result::Ok; -} - -static Result visit_expr(Expr* expr, ExprVisitor* visitor) { - switch (expr->type) { - case ExprType::Binary: - CALLBACK(on_binary_expr); - break; - - case ExprType::Block: - CALLBACK(begin_block_expr); - CHECK_RESULT(visit_expr_list(expr->block->first, visitor)); - CALLBACK(end_block_expr); - break; - - case ExprType::Br: - CALLBACK(on_br_expr); - break; - - case ExprType::BrIf: - CALLBACK(on_br_if_expr); - break; - - case ExprType::BrTable: - CALLBACK(on_br_table_expr); - break; - - case ExprType::Call: - CALLBACK(on_call_expr); - break; - - case ExprType::CallIndirect: - CALLBACK(on_call_indirect_expr); - break; - - case ExprType::Compare: - CALLBACK(on_compare_expr); - break; - - case ExprType::Const: - CALLBACK(on_const_expr); - break; - - case ExprType::Convert: - CALLBACK(on_convert_expr); - break; - - case ExprType::CurrentMemory: - CALLBACK(on_current_memory_expr); - break; - - case ExprType::Drop: - CALLBACK(on_drop_expr); - break; - - case ExprType::GetGlobal: - CALLBACK(on_get_global_expr); - break; - - case ExprType::GetLocal: - CALLBACK(on_get_local_expr); - break; - - case ExprType::GrowMemory: - CALLBACK(on_grow_memory_expr); - break; - - case ExprType::If: - CALLBACK(begin_if_expr); - CHECK_RESULT(visit_expr_list(expr->if_.true_->first, visitor)); - CALLBACK(after_if_true_expr); - CHECK_RESULT(visit_expr_list(expr->if_.false_, visitor)); - CALLBACK(end_if_expr); - break; - - case ExprType::Load: - CALLBACK(on_load_expr); - break; - - case ExprType::Loop: - CALLBACK(begin_loop_expr); - CHECK_RESULT(visit_expr_list(expr->loop->first, visitor)); - CALLBACK(end_loop_expr); - break; - - case ExprType::Nop: - CALLBACK(on_nop_expr); - break; - - case ExprType::Return: - CALLBACK(on_return_expr); - break; - - case ExprType::Select: - CALLBACK(on_select_expr); - break; - - case ExprType::SetGlobal: - CALLBACK(on_set_global_expr); - break; - - case ExprType::SetLocal: - CALLBACK(on_set_local_expr); - break; - - case ExprType::Store: - CALLBACK(on_store_expr); - break; - - case ExprType::TeeLocal: - CALLBACK(on_tee_local_expr); - break; - - case ExprType::Unary: - CALLBACK(on_unary_expr); - break; - - case ExprType::Unreachable: - CALLBACK(on_unreachable_expr); - break; - } - - return Result::Ok; -} - -/* TODO(binji): make the visitor non-recursive */ -Result visit_func(Func* func, ExprVisitor* visitor) { - return visit_expr_list(func->first_expr, visitor); -} - } // namespace wabt |