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

Reply via email to