This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via eaadfd357c9a6a438f642dd892b8bea771279a90 (commit) via 1d3d48110311ca68cceef70dc56f6c2ced36f68e (commit) from e985c24c197f416fdf1a85a3a833e82609357841 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eaadfd357c9a6a438f642dd892b8bea771279a90 commit eaadfd357c9a6a438f642dd892b8bea771279a90 Merge: e985c24 1d3d481 Author: Brad King <brad.k...@kitware.com> AuthorDate: Tue Apr 12 19:31:11 2016 -0400 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Tue Apr 12 19:31:11 2016 -0400 Merge topic 'refactor-cmListFileBacktrace' into next 1d3d4811 Revert "cmState: Avoid accumulating snapshot storage for backtraces" https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1d3d48110311ca68cceef70dc56f6c2ced36f68e commit 1d3d48110311ca68cceef70dc56f6c2ced36f68e Author: Brad King <brad.k...@kitware.com> AuthorDate: Tue Apr 12 19:30:45 2016 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Tue Apr 12 19:30:45 2016 -0400 Revert "cmState: Avoid accumulating snapshot storage for backtraces" This reverts commit 6c76ede12f950cee51c10d1fb1988adab1477976. diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index 083a0e2..d5d0184 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -400,37 +400,12 @@ bool cmListFileParser::AddArgument(cmListFileLexer_Token* token, cmListFileBacktrace::cmListFileBacktrace(cmState::Snapshot snapshot, cmCommandContext const& cc) - : Snapshot(snapshot) + : Context(cc) + , Snapshot(snapshot) { - if (!this->Snapshot.IsValid()) + if (this->Snapshot.IsValid()) { - return; - } - - // Record the entire call stack now so that the `Snapshot` we - // save for later refers to a long-lived scope. This avoids - // having to keep short-lived scopes around just to extract - // their backtrace information later. - - cmListFileContext lfc = - cmListFileContext::FromCommandContext( - cc, this->Snapshot.GetExecutionListFile()); - this->push_back(lfc); - - cmState::Snapshot parent = this->Snapshot.GetCallStackParent(); - while (parent.IsValid()) - { - lfc.Name = this->Snapshot.GetEntryPointCommand(); - lfc.Line = this->Snapshot.GetEntryPointLine(); - lfc.FilePath = parent.GetExecutionListFile(); - if (lfc.FilePath.empty()) - { - break; - } - this->push_back(lfc); - - this->Snapshot = parent; - parent = parent.GetCallStackParent(); + this->Snapshot.Keep(); } } @@ -440,30 +415,48 @@ cmListFileBacktrace::~cmListFileBacktrace() void cmListFileBacktrace::PrintTitle(std::ostream& out) const { - if (this->empty()) + if (!this->Snapshot.IsValid()) { return; } cmOutputConverter converter(this->Snapshot); - cmListFileContext lfc = this->front(); + cmListFileContext lfc = + cmListFileContext::FromCommandContext( + this->Context, this->Snapshot.GetExecutionListFile()); lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); out << (lfc.Line ? " at " : " in ") << lfc; } void cmListFileBacktrace::PrintCallStack(std::ostream& out) const { - if (this->size() <= 1) + if (!this->Snapshot.IsValid()) + { + return; + } + cmState::Snapshot parent = this->Snapshot.GetCallStackParent(); + if (!parent.IsValid() || parent.GetExecutionListFile().empty()) { return; } - out << "Call Stack (most recent call first):\n"; cmOutputConverter converter(this->Snapshot); - for (const_iterator i = this->begin() + 1; i != this->end(); ++i) + std::string commandName = this->Snapshot.GetEntryPointCommand(); + long commandLine = this->Snapshot.GetEntryPointLine(); + + out << "Call Stack (most recent call first):\n"; + while(parent.IsValid()) { - cmListFileContext lfc = *i; - lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); + cmListFileContext lfc; + lfc.Name = commandName; + lfc.Line = commandLine; + + lfc.FilePath = converter.Convert(parent.GetExecutionListFile(), + cmOutputConverter::HOME); out << " " << lfc << "\n"; + + commandName = parent.GetEntryPointCommand(); + commandLine = parent.GetEntryPointLine(); + parent = parent.GetCallStackParent(); } } diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h index d3cab22..4d3055f 100644 --- a/Source/cmListFileCache.h +++ b/Source/cmListFileCache.h @@ -87,7 +87,7 @@ struct cmListFileFunction: public cmCommandContext std::vector<cmListFileArgument> Arguments; }; -class cmListFileBacktrace: private std::vector<cmListFileContext> +class cmListFileBacktrace { public: cmListFileBacktrace(cmState::Snapshot snapshot = cmState::Snapshot(), @@ -97,6 +97,7 @@ class cmListFileBacktrace: private std::vector<cmListFileContext> void PrintTitle(std::ostream& out) const; void PrintCallStack(std::ostream& out) const; private: + cmCommandContext Context; cmState::Snapshot Snapshot; }; diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 3867dfc..be8e418 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -1098,6 +1098,11 @@ void cmState::Directory::SetCurrentBinary(std::string const& dir) this->Snapshot_.SetDefinition("CMAKE_CURRENT_BINARY_DIR", loc.c_str()); } +void cmState::Snapshot::Keep() +{ + this->Position->Keep = true; +} + void cmState::Snapshot::SetListFile(const std::string& listfile) { *this->Position->ExecutionListFile = listfile; diff --git a/Source/cmState.h b/Source/cmState.h index e472a45..ef61406 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -63,6 +63,7 @@ public: std::vector<std::string> ClosureKeys() const; bool RaiseScope(std::string const& var, const char* varDef); + void Keep(); void SetListFile(std::string const& listfile); std::string GetExecutionListFile() const; ----------------------------------------------------------------------- Summary of changes: Source/cmListFileCache.cxx | 65 ++++++++++++++++++++------------------------ Source/cmListFileCache.h | 3 +- Source/cmState.cxx | 5 ++++ Source/cmState.h | 1 + 4 files changed, 37 insertions(+), 37 deletions(-) hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits