From bb6e6923f25841874b6a915d234d884ddd4c92dd Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 11 Apr 2019 23:04:13 +0200 Subject: Add environment variable NIX_SHOW_SYMBOLS for dumping the symbol table --- src/libexpr/eval.cc | 6 ++++++ src/libexpr/symbol-table.hh | 7 +++++++ 2 files changed, 13 insertions(+) (limited to 'src/libexpr') diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 211f7a55f..d8e10d9f2 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -1811,6 +1811,7 @@ void EvalState::printStats() gc.attr("totalBytes", totalBytes); } #endif + if (countCalls) { { auto obj = topObj.object("primops"); @@ -1846,6 +1847,11 @@ void EvalState::printStats() } } } + + if (getEnv("NIX_SHOW_SYMBOLS", "0") != "0") { + auto list = topObj.list("symbols"); + symbols.dump([&](const std::string & s) { list.elem(s); }); + } } } diff --git a/src/libexpr/symbol-table.hh b/src/libexpr/symbol-table.hh index 44929f7ee..91faea122 100644 --- a/src/libexpr/symbol-table.hh +++ b/src/libexpr/symbol-table.hh @@ -75,6 +75,13 @@ public: } size_t totalSize() const; + + template + void dump(T callback) + { + for (auto & s : symbols) + callback(s); + } }; } -- cgit v1.2.3