From 039e6700972bd064154d28488a3f3c4a4d9197df Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Wed, 8 May 2024 16:53:37 -0700 Subject: [PATCH] remove vestigial statement counterparts --- src/Stmt.cc | 45 ------------------------------ src/Stmt.h | 36 ------------------------ src/StmtEnums.h | 2 -- src/script_opt/CPP/Compile.h | 2 -- src/script_opt/CPP/Stmts.cc | 39 -------------------------- src/script_opt/Stmt.cc | 20 ------------- src/script_opt/UseDefs.cc | 2 -- src/script_opt/ZAM/Compile.h | 2 -- src/script_opt/ZAM/Stmt.cc | 54 ------------------------------------ 9 files changed, 202 deletions(-) diff --git a/src/Stmt.cc b/src/Stmt.cc index 453e72cc12..a1edb51ee0 100644 --- a/src/Stmt.cc +++ b/src/Stmt.cc @@ -39,8 +39,6 @@ const char* stmt_name(StmtTag t) { "next", "break", "return", - "add", - "delete", "list", "bodylist", "", @@ -904,49 +902,6 @@ TraversalCode SwitchStmt::Traverse(TraversalCallback* cb) const { HANDLE_TC_STMT_POST(tc); } -AddDelStmt::AddDelStmt(StmtTag t, ExprPtr arg_e) : ExprStmt(t, std::move(arg_e)) {} - -bool AddDelStmt::IsPure() const { return false; } - -TraversalCode AddDelStmt::Traverse(TraversalCallback* cb) const { - TraversalCode tc = cb->PreStmt(this); - HANDLE_TC_STMT_PRE(tc); - - // Argument is stored in base class's "e" field. - tc = e->Traverse(cb); - HANDLE_TC_STMT_PRE(tc); - - tc = cb->PostStmt(this); - HANDLE_TC_STMT_POST(tc); -} - -AddStmt::AddStmt(ExprPtr arg_e) : AddDelStmt(STMT_ADD, std::move(arg_e)) { - if ( ! e->CanAdd() ) - Error("illegal add statement"); -} - -ValPtr AddStmt::Exec(Frame* f, StmtFlowType& flow) { - RegisterAccess(); - flow = FLOW_NEXT; - e->Add(f); - return nullptr; -} - -DelStmt::DelStmt(ExprPtr arg_e) : AddDelStmt(STMT_DELETE, std::move(arg_e)) { - if ( e->IsError() ) - return; - - if ( ! e->CanDel() ) - Error("illegal delete statement"); -} - -ValPtr DelStmt::Exec(Frame* f, StmtFlowType& flow) { - RegisterAccess(); - flow = FLOW_NEXT; - e->Delete(f); - return nullptr; -} - EventStmt::EventStmt(EventExprPtr arg_e) : ExprStmt(STMT_EVENT, arg_e), event_expr(std::move(arg_e)) {} ValPtr EventStmt::Exec(Frame* f, StmtFlowType& flow) { diff --git a/src/Stmt.h b/src/Stmt.h index 5e575f0555..d714a61d56 100644 --- a/src/Stmt.h +++ b/src/Stmt.h @@ -228,42 +228,6 @@ protected: std::vector> case_label_type_list; }; -// Helper class. Added for script optimization, but it makes sense -// in terms of factoring even without. -class AddDelStmt : public ExprStmt { -public: - TraversalCode Traverse(TraversalCallback* cb) const override; - - bool IsPure() const override; - - // Optimization-related: - StmtPtr DoReduce(Reducer* c) override; - bool IsReduced(Reducer* c) const override; - -protected: - AddDelStmt(StmtTag t, ExprPtr arg_e); -}; - -class AddStmt final : public AddDelStmt { -public: - explicit AddStmt(ExprPtr e); - - ValPtr Exec(Frame* f, StmtFlowType& flow) override; - - // Optimization-related: - StmtPtr Duplicate() override; -}; - -class DelStmt final : public AddDelStmt { -public: - explicit DelStmt(ExprPtr e); - - ValPtr Exec(Frame* f, StmtFlowType& flow) override; - - // Optimization-related: - StmtPtr Duplicate() override; -}; - class EventStmt final : public ExprStmt { public: explicit EventStmt(EventExprPtr e); diff --git a/src/StmtEnums.h b/src/StmtEnums.h index 43d1e7314a..04bbfcb189 100644 --- a/src/StmtEnums.h +++ b/src/StmtEnums.h @@ -18,8 +18,6 @@ enum StmtTag { STMT_NEXT, STMT_BREAK, STMT_RETURN, - STMT_ADD, // ### DELETE - STMT_DELETE, // ### DELETE STMT_LIST, STMT_EVENT_BODY_LIST, STMT_INIT, diff --git a/src/script_opt/CPP/Compile.h b/src/script_opt/CPP/Compile.h index fb7889e6f4..e825b1a0a9 100644 --- a/src/script_opt/CPP/Compile.h +++ b/src/script_opt/CPP/Compile.h @@ -688,8 +688,6 @@ private: void GenIfStmt(const IfStmt* i); void GenWhileStmt(const WhileStmt* w); void GenReturnStmt(const ReturnStmt* r); - void GenAddStmt(const ExprStmt* es); - void GenDeleteStmt(const ExprStmt* es); void GenEventStmt(const EventStmt* ev); void GenSwitchStmt(const SwitchStmt* sw); diff --git a/src/script_opt/CPP/Stmts.cc b/src/script_opt/CPP/Stmts.cc index 40d9c0376f..06837fcf87 100644 --- a/src/script_opt/CPP/Stmts.cc +++ b/src/script_opt/CPP/Stmts.cc @@ -39,10 +39,6 @@ void CPPCompile::GenStmt(const Stmt* s) { case STMT_RETURN: GenReturnStmt(s->AsReturnStmt()); break; - case STMT_ADD: GenAddStmt(static_cast(s)); break; - - case STMT_DELETE: GenDeleteStmt(static_cast(s)); break; - case STMT_EVENT: GenEventStmt(static_cast(s)); break; case STMT_SWITCH: GenSwitchStmt(static_cast(s)); break; @@ -149,41 +145,6 @@ void CPPCompile::GenReturnStmt(const ReturnStmt* r) { } } -void CPPCompile::GenAddStmt(const ExprStmt* es) { - auto op = es->StmtExpr(); - auto aggr = GenExpr(op->GetOp1(), GEN_DONT_CARE); - auto indices = op->GetOp2(); - - Emit("add_element__CPP(%s, index_val__CPP({%s}));", aggr, GenExpr(indices, GEN_VAL_PTR)); -} - -void CPPCompile::GenDeleteStmt(const ExprStmt* es) { - auto op = es->StmtExpr(); - - if ( op->Tag() == EXPR_NAME ) { - if ( op->GetType()->Tag() == TYPE_TABLE ) - Emit("%s->RemoveAll();", GenExpr(op, GEN_VAL_PTR)); - else - Emit("%s->Resize(0);", GenExpr(op, GEN_VAL_PTR)); - return; - } - - auto aggr = op->GetOp1(); - auto aggr_gen = GenExpr(aggr, GEN_VAL_PTR); - - if ( op->Tag() == EXPR_INDEX ) { - auto indices = op->GetOp2(); - - Emit("remove_element__CPP(%s, index_val__CPP({%s}));", aggr_gen, GenExpr(indices, GEN_VAL_PTR)); - } - - else { - ASSERT(op->Tag() == EXPR_FIELD); - auto field = GenField(aggr, op->AsFieldExpr()->Field()); - Emit("%s->Remove(%s);", aggr_gen, field); - } -} - void CPPCompile::GenEventStmt(const EventStmt* ev) { auto ev_s = ev->StmtExprPtr(); auto ev_e = cast_intrusive(ev_s); diff --git a/src/script_opt/Stmt.cc b/src/script_opt/Stmt.cc index e95395e7d4..6a237a07be 100644 --- a/src/script_opt/Stmt.cc +++ b/src/script_opt/Stmt.cc @@ -486,26 +486,6 @@ bool SwitchStmt::CouldReturn(bool ignore_break) const { return false; } -bool AddDelStmt::IsReduced(Reducer* c) const { return e->HasReducedOps(c); } - -StmtPtr AddDelStmt::DoReduce(Reducer* c) { - if ( c->Optimizing() ) { - e = c->OptExpr(e); - return ThisPtr(); - } - - auto red_e_stmt = e->ReduceToSingletons(c); - - if ( red_e_stmt ) - return TransformMe(make_intrusive(red_e_stmt, ThisPtr()), c); - else - return ThisPtr(); -} - -StmtPtr AddStmt::Duplicate() { return SetSucc(new AddStmt(e->Duplicate())); } - -StmtPtr DelStmt::Duplicate() { return SetSucc(new DelStmt(e->Duplicate())); } - StmtPtr EventStmt::Duplicate() { return SetSucc(new EventStmt(e->Duplicate()->AsEventExprPtr())); } StmtPtr EventStmt::DoReduce(Reducer* c) { diff --git a/src/script_opt/UseDefs.cc b/src/script_opt/UseDefs.cc index c9d17a3038..2ff5013c90 100644 --- a/src/script_opt/UseDefs.cc +++ b/src/script_opt/UseDefs.cc @@ -223,8 +223,6 @@ UDs UseDefs::PropagateUDs(const Stmt* s, UDs succ_UDs, const Stmt* succ_stmt, bo case STMT_EVENT: case STMT_CHECK_ANY_LEN: - case STMT_ADD: - case STMT_DELETE: case STMT_RETURN: { auto e = static_cast(s)->StmtExpr(); diff --git a/src/script_opt/ZAM/Compile.h b/src/script_opt/ZAM/Compile.h index dbe50dc2d9..a952f2b8f2 100644 --- a/src/script_opt/ZAM/Compile.h +++ b/src/script_opt/ZAM/Compile.h @@ -137,8 +137,6 @@ private: const ZAMStmt CompileExpr(const ExprStmt* es); const ZAMStmt CompileIf(const IfStmt* is); const ZAMStmt CompileSwitch(const SwitchStmt* sw); - const ZAMStmt CompileAdd(const AddStmt* as); - const ZAMStmt CompileDel(const DelStmt* ds); const ZAMStmt CompileWhile(const WhileStmt* ws); const ZAMStmt CompileFor(const ForStmt* f); const ZAMStmt CompileReturn(const ReturnStmt* r); diff --git a/src/script_opt/ZAM/Stmt.cc b/src/script_opt/ZAM/Stmt.cc index 425062157d..2749729b1c 100644 --- a/src/script_opt/ZAM/Stmt.cc +++ b/src/script_opt/ZAM/Stmt.cc @@ -28,10 +28,6 @@ const ZAMStmt ZAMCompiler::CompileStmt(const Stmt* s) { case STMT_SWITCH: return CompileSwitch(static_cast(s)); - case STMT_ADD: return CompileAdd(static_cast(s)); - - case STMT_DELETE: return CompileDel(static_cast(s)); - case STMT_EVENT: { auto es = static_cast(s); auto e = static_cast(es->StmtExpr()); @@ -623,56 +619,6 @@ const ZAMStmt ZAMCompiler::TypeSwitch(const SwitchStmt* sw, const NameExpr* v, c return body_end; } -const ZAMStmt ZAMCompiler::CompileAdd(const AddStmt* as) { - auto e = as->StmtExprPtr(); - auto aggr = e->GetOp1()->AsNameExpr(); - auto index_list = e->GetOp2(); - - if ( index_list->Tag() != EXPR_LIST ) - reporter->InternalError("non-list in \"add\""); - - auto indices = index_list->AsListExprPtr(); - auto& exprs = indices->Exprs(); - - if ( exprs.length() == 1 ) { - auto e1 = exprs[0]; - if ( e1->Tag() == EXPR_NAME ) - return AddStmt1VV(aggr, e1->AsNameExpr()); - else - return AddStmt1VC(aggr, e1->AsConstExpr()); - } - - return AddStmtVO(aggr, BuildVals(indices)); -} - -const ZAMStmt ZAMCompiler::CompileDel(const DelStmt* ds) { - auto e = ds->StmtExprPtr(); - - if ( e->Tag() == EXPR_NAME ) { - auto n = e->AsNameExpr(); - - if ( n->GetType()->Tag() == TYPE_TABLE ) - return ClearTableV(n); - else - return ClearVectorV(n); - } - - auto aggr = e->GetOp1()->AsNameExpr(); - - if ( e->Tag() == EXPR_FIELD ) { - int field = e->AsFieldExpr()->Field(); - return DelFieldVi(aggr, field); - } - - auto index_list = e->GetOp2(); - - if ( index_list->Tag() != EXPR_LIST ) - reporter->InternalError("non-list in \"delete\""); - - auto internal_ind = std::unique_ptr(BuildVals(index_list->AsListExprPtr())); - return DelTableVO(aggr, internal_ind.get()); -} - const ZAMStmt ZAMCompiler::CompileWhile(const WhileStmt* ws) { auto loop_condition = ws->Condition();