mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
remove vestigial statement counterparts
This commit is contained in:
parent
265788b50b
commit
039e670097
9 changed files with 0 additions and 202 deletions
45
src/Stmt.cc
45
src/Stmt.cc
|
@ -39,8 +39,6 @@ const char* stmt_name(StmtTag t) {
|
|||
"next",
|
||||
"break",
|
||||
"return",
|
||||
"add",
|
||||
"delete",
|
||||
"list",
|
||||
"bodylist",
|
||||
"<init>",
|
||||
|
@ -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) {
|
||||
|
|
36
src/Stmt.h
36
src/Stmt.h
|
@ -228,42 +228,6 @@ protected:
|
|||
std::vector<std::pair<ID*, int>> 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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -39,10 +39,6 @@ void CPPCompile::GenStmt(const Stmt* s) {
|
|||
|
||||
case STMT_RETURN: GenReturnStmt(s->AsReturnStmt()); break;
|
||||
|
||||
case STMT_ADD: GenAddStmt(static_cast<const ExprStmt*>(s)); break;
|
||||
|
||||
case STMT_DELETE: GenDeleteStmt(static_cast<const ExprStmt*>(s)); break;
|
||||
|
||||
case STMT_EVENT: GenEventStmt(static_cast<const EventStmt*>(s)); break;
|
||||
|
||||
case STMT_SWITCH: GenSwitchStmt(static_cast<const SwitchStmt*>(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<EventExpr>(ev_s);
|
||||
|
|
|
@ -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<StmtList>(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) {
|
||||
|
|
|
@ -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<const ExprStmt*>(s)->StmtExpr();
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -28,10 +28,6 @@ const ZAMStmt ZAMCompiler::CompileStmt(const Stmt* s) {
|
|||
|
||||
case STMT_SWITCH: return CompileSwitch(static_cast<const SwitchStmt*>(s));
|
||||
|
||||
case STMT_ADD: return CompileAdd(static_cast<const AddStmt*>(s));
|
||||
|
||||
case STMT_DELETE: return CompileDel(static_cast<const DelStmt*>(s));
|
||||
|
||||
case STMT_EVENT: {
|
||||
auto es = static_cast<const EventStmt*>(s);
|
||||
auto e = static_cast<const EventExpr*>(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<OpaqueVals>(BuildVals(index_list->AsListExprPtr()));
|
||||
return DelTableVO(aggr, internal_ind.get());
|
||||
}
|
||||
|
||||
const ZAMStmt ZAMCompiler::CompileWhile(const WhileStmt* ws) {
|
||||
auto loop_condition = ws->Condition();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue