Profiling: Profile genex evaluation

This commit is contained in:
Kyle Edwards
2022-11-10 14:44:58 -05:00
parent 09d7f947d6
commit 4d70a94545
2 changed files with 42 additions and 2 deletions

View File

@@ -16,6 +16,7 @@
#include "cmLocalGenerator.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmake.h"
cmGeneratorExpression::cmGeneratorExpression(cmake& cmakeInstance,
cmListFileBacktrace backtrace)
@@ -43,6 +44,11 @@ std::string cmGeneratorExpression::Evaluate(
cmGeneratorTarget const* currentTarget, std::string const& language)
{
if (Find(input) != std::string::npos) {
#ifndef CMAKE_BOOTSTRAP
auto profilingRAII = lg->GetCMakeInstance()->CreateProfilingEntry(
"genex_compile_eval", input);
#endif
cmCompiledGeneratorExpression cge(*lg->GetCMakeInstance(),
cmListFileBacktrace(), std::move(input));
return cge.Evaluate(lg, config, headTarget, dagChecker, currentTarget,
@@ -102,10 +108,15 @@ const std::string& cmCompiledGeneratorExpression::EvaluateWithContext(
}
cmCompiledGeneratorExpression::cmCompiledGeneratorExpression(
cmake& /*cmakeInstance*/, cmListFileBacktrace backtrace, std::string input)
cmake& cmakeInstance, cmListFileBacktrace backtrace, std::string input)
: Backtrace(std::move(backtrace))
, Input(std::move(input))
{
#ifndef CMAKE_BOOTSTRAP
auto profilingRAII =
cmakeInstance.CreateProfilingEntry("genex_compile", this->Input);
#endif
cmGeneratorExpressionLexer l;
std::vector<cmGeneratorExpressionToken> tokens = l.Tokenize(this->Input);
this->NeedsEvaluation = l.GetSawGeneratorExpression();

View File

@@ -4,8 +4,14 @@
#include <sstream>
#ifndef CMAKE_BOOTSTRAP
# include <cm3p/json/value.h>
#endif
#include "cmGeneratorExpressionContext.h"
#include "cmGeneratorExpressionNode.h"
#include "cmLocalGenerator.h"
#include "cmake.h"
GeneratorExpressionContent::GeneratorExpressionContent(
const char* startContent, size_t length)
@@ -61,6 +67,12 @@ std::string GeneratorExpressionContent::Evaluate(
cmGeneratorExpressionContext* context,
cmGeneratorExpressionDAGChecker* dagChecker) const
{
#ifndef CMAKE_BOOTSTRAP
auto evalProfilingRAII =
context->LG->GetCMakeInstance()->CreateProfilingEntry(
"genex_eval", this->GetOriginalExpression());
#endif
std::string identifier;
{
for (const auto& pExprEval : this->IdentifierChildren) {
@@ -101,7 +113,24 @@ std::string GeneratorExpressionContent::Evaluate(
return std::string();
}
return node->Evaluate(parameters, context, this, dagChecker);
{
#ifndef CMAKE_BOOTSTRAP
auto execProfilingRAII =
context->LG->GetCMakeInstance()->CreateProfilingEntry(
"genex_exec", identifier, [&parameters]() -> Json::Value {
Json::Value args = Json::objectValue;
if (!parameters.empty()) {
args["genexArgs"] = Json::arrayValue;
for (auto const& parameter : parameters) {
args["genexArgs"].append(parameter);
}
}
return args;
});
#endif
return node->Evaluate(parameters, context, this, dagChecker);
}
}
std::string GeneratorExpressionContent::EvaluateParameters(