aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/eval.hh
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-08-27 11:09:07 -0400
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-08-27 11:09:07 -0400
commite94806d03098f1d6e654542500bbea1eaa0ec60b (patch)
tree4e967f3d39a984d86bb93849d76cab92512a07ce /src/libexpr/eval.hh
parent9c2decaa1935ae4bf99a9b723d4eab188f8f88ef (diff)
parenta9e6752bbd888ab8fbc1cda6e4d539b2858c4cef (diff)
Merge branch 'master' into no-manifests
Diffstat (limited to 'src/libexpr/eval.hh')
-rw-r--r--src/libexpr/eval.hh24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh
index 5103ae8ce..a1f26a056 100644
--- a/src/libexpr/eval.hh
+++ b/src/libexpr/eval.hh
@@ -232,11 +232,13 @@ public:
void mkAttrs(Value & v, unsigned int expected);
void mkThunk_(Value & v, Expr * expr);
+ void concatLists(Value & v, unsigned int nrLists, Value * * lists);
+
/* Print statistics. */
void printStats();
private:
-
+
unsigned long nrEnvs;
unsigned long nrValuesInEnvs;
unsigned long nrValues;
@@ -244,9 +246,25 @@ private:
unsigned long nrAttrsets;
unsigned long nrOpUpdates;
unsigned long nrOpUpdateValuesCopied;
-
- friend class RecursionCounter;
+ unsigned long nrListConcats;
+ unsigned long nrPrimOpCalls;
+ unsigned long nrFunctionCalls;
+
+ bool countCalls;
+
+ typedef std::map<Symbol, unsigned int> PrimOpCalls;
+ PrimOpCalls primOpCalls;
+
+ typedef std::map<Pos, unsigned int> FunctionCalls;
+ FunctionCalls functionCalls;
+
+ typedef std::map<Pos, unsigned int> AttrSelects;
+ AttrSelects attrSelects;
+
friend class ExprOpUpdate;
+ friend class ExprOpConcatLists;
+ friend class ExprSelect;
+ friend void prim_getAttr(EvalState & state, Value * * args, Value & v);
};