mirror of
https://github.com/zeek/zeek.git
synced 2025-10-14 04:28:20 +00:00
Optimize record constructor expression.
We remove the inheritance from UnaryExpression because we know the type of the operand precisely and can skip a temporary when evaluating the expression. #425
This commit is contained in:
parent
d782c60f19
commit
e9aa531b83
2 changed files with 37 additions and 8 deletions
13
src/Expr.h
13
src/Expr.h
|
@ -630,16 +630,25 @@ protected:
|
|||
int field;
|
||||
};
|
||||
|
||||
class RecordConstructorExpr final : public UnaryExpr {
|
||||
class RecordConstructorExpr final : public Expr {
|
||||
public:
|
||||
explicit RecordConstructorExpr(ListExprPtr constructor_list);
|
||||
~RecordConstructorExpr() override;
|
||||
|
||||
ListExpr* Op() const { return op.get(); }
|
||||
|
||||
ValPtr Eval(Frame* f) const override;
|
||||
|
||||
bool IsPure() const override;
|
||||
|
||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||
|
||||
protected:
|
||||
ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const override;
|
||||
ValPtr Fold(Val* v) const override;
|
||||
|
||||
void ExprDescribe(ODesc* d) const override;
|
||||
|
||||
ListExprPtr op;
|
||||
};
|
||||
|
||||
class TableConstructorExpr final : public UnaryExpr {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue