Merge pull request #8970 from hercules-ci/eval-stuff

Expr: remove redundant fields, add nrExprs
This commit is contained in:
Robert Hensing 2023-09-25 19:49:22 +02:00 committed by GitHub
commit b19bd4f348
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 6 deletions

View file

@ -2506,6 +2506,7 @@ void EvalState::printStats()
{"elements", nrValuesInEnvs}, {"elements", nrValuesInEnvs},
{"bytes", bEnvs}, {"bytes", bEnvs},
}; };
topObj["nrExprs"] = Expr::nrExprs;
topObj["list"] = { topObj["list"] = {
{"elements", nrListElems}, {"elements", nrListElems},
{"bytes", bLists}, {"bytes", bLists},

View file

@ -76,12 +76,12 @@ void Expr::show(const SymbolTable & symbols, std::ostream & str) const
void ExprInt::show(const SymbolTable & symbols, std::ostream & str) const void ExprInt::show(const SymbolTable & symbols, std::ostream & str) const
{ {
str << n; str << v.integer;
} }
void ExprFloat::show(const SymbolTable & symbols, std::ostream & str) const void ExprFloat::show(const SymbolTable & symbols, std::ostream & str) const
{ {
str << nf; str << v.fpoint;
} }
void ExprString::show(const SymbolTable & symbols, std::ostream & str) const void ExprString::show(const SymbolTable & symbols, std::ostream & str) const

View file

@ -155,6 +155,10 @@ std::string showAttrPath(const SymbolTable & symbols, const AttrPath & attrPath)
struct Expr struct Expr
{ {
static unsigned long nrExprs;
Expr() {
nrExprs++;
}
virtual ~Expr() { }; virtual ~Expr() { };
virtual void show(const SymbolTable & symbols, std::ostream & str) const; virtual void show(const SymbolTable & symbols, std::ostream & str) const;
virtual void bindVars(EvalState & es, const std::shared_ptr<const StaticEnv> & env); virtual void bindVars(EvalState & es, const std::shared_ptr<const StaticEnv> & env);
@ -171,18 +175,16 @@ struct Expr
struct ExprInt : Expr struct ExprInt : Expr
{ {
NixInt n;
Value v; Value v;
ExprInt(NixInt n) : n(n) { v.mkInt(n); }; ExprInt(NixInt n) { v.mkInt(n); };
Value * maybeThunk(EvalState & state, Env & env) override; Value * maybeThunk(EvalState & state, Env & env) override;
COMMON_METHODS COMMON_METHODS
}; };
struct ExprFloat : Expr struct ExprFloat : Expr
{ {
NixFloat nf;
Value v; Value v;
ExprFloat(NixFloat nf) : nf(nf) { v.mkFloat(nf); }; ExprFloat(NixFloat nf) { v.mkFloat(nf); };
Value * maybeThunk(EvalState & state, Env & env) override; Value * maybeThunk(EvalState & state, Env & env) override;
COMMON_METHODS COMMON_METHODS
}; };

View file

@ -653,6 +653,7 @@ formal
namespace nix { namespace nix {
unsigned long Expr::nrExprs = 0;
Expr * EvalState::parse( Expr * EvalState::parse(
char * text, char * text,