- 15 Apr, 2016 2 commits
-
-
Brad King authored
Changes during post-3.3/pre-3.4 development refactored storage of most configure-time information, including variable bindings and function scopes. All scopes (even short-lived) were kept persistently for possible future debugging features, causing huge accumulated memory usage. This was mostly addressed by commit v3.4.1~4^2 (cmState: Avoid accumulating snapshot storage for short-lived scopes, 2015-11-24). Since then we still keep short-lived scopes when they are needed for a backtrace. This is because since commit v3.4.0-rc1~378^2 (cmListFileBacktrace: Implement in terms of cmState::Snapshot, 2015-05-29) backtraces have been lightweight objects that simply point into the snapshot tree. While the intention of this approach was to avoid duplicating the call stack file path strings, the cost turned out to be holding on to the entire call stack worth of scope snapshots, which is much worse. Furthermore, since commit v3.4.0-rc2~1^2 (cmIfCommand: Issue CMP0054 warning with appropriate context, 2015-10-20) all conditions used in `if()` commands hold a backtrace for use in diagnostic messages. Even though the backtrace is short-lived it still causes the scope snapshot to be kept. This means that code like function(foo) if(0) endif() endfunction() foreach(i RANGE 1000000) foo() endforeach() accumulates storage for the function call scope snapshots. Fix this by partially reverting commit v3.4.0-rc1~378^2 and saving the entire call stack during cmListFileBacktrace construction. This way we can avoid keeping short-lived scope snapshot storage in all cases.
-
Brad King authored
The bottom of the call stack is always a long-lived snapshot and can be saved for later use with cmOutputConverter.
-
- 12 Apr, 2016 1 commit
-
-
Brad King authored
-
- 25 Nov, 2015 3 commits
-
-
Brad King authored
We need to keep only certain snapshot types and their ancestors. Also keep those needed for backtraces.
-
Brad King authored
We enforce policy push/pop balance around any scope that pushes/pops a snapshot. Therefore a snapshot may never reference entries of PolicyStack that were created in nested scopes. Free storage of short-lived policy stack entries when they are popped.
-
Brad King authored
Logically the method pushes a nested scope on top of a given scope because the "up" pointer sequence forms a stack independent of any other branches of the tree.
-
- 24 Nov, 2015 2 commits
-
-
Brad King authored
Everywhere we use cmMakefile::ScopePushPop to manage variable scopes also expects policy scopes to be balanced. There is no place that we use cmMakefile::PolicyPushPop without also using ScopePushPop. Relieve PolicyPushPop of responsibility for policy scope balance checks by moving it to ScopePushPop.
-
Brad King authored
Since commit v3.4.0-rc1~179^2~1 (cmState: Add a VariableScope snapshot type, 2015-08-23) the snapshot stack may have a VariableScopeType entry. Skip over these when constructing the call stack, just as we do for policy scopes. Otherwise we report the command causing the variable scope to be entered twice (e.g. find_package while loading a package version file).
-
- 14 Oct, 2015 1 commit
-
-
Stephen Kelly authored
-
- 13 Oct, 2015 5 commits
-
-
Stephen Kelly authored
Add new API for the subdirs command to cmState. This fixes a regression introduced in commit f716460e (cmMakefile: Move invokation to initialize snapshot., 2015-10-06).
-
Stephen Kelly authored
Don't leave this as cmMakefile responsibility.
-
Stephen Kelly authored
Don't leave this as cmMakefile responsibility.
-
Stephen Kelly authored
Don't leave this as cmMakefile responsibility.
-
Stephen Kelly authored
Don't leave this as cmMakefile responsibility.
-
- 10 Oct, 2015 6 commits
-
-
Stephen Kelly authored
-
Stephen Kelly authored
-
Stephen Kelly authored
-
Stephen Kelly authored
-
Stephen Kelly authored
-
Stephen Kelly authored
-
- 07 Oct, 2015 1 commit
-
-
Stephen Kelly authored
-
- 11 Sep, 2015 3 commits
-
-
Stephen Kelly authored
This is the appropriate snapshot for future use. Existing users of this method are mostly just calling GetDirectory on the result, but the progress tracking of the Makefile generator needs a consistent snapshot to be used, so the end snapshot should be consistently used.
-
Stephen Kelly authored
This is a change in behavior from CMake 3.3, but there is no semantic meaning to empty entries in buildsystem properties. This also restores behavior to that of CMake 2.8.10.
-
Stephen Kelly authored
-
- 25 Aug, 2015 1 commit
-
-
Stephen Kelly authored
-
- 24 Aug, 2015 3 commits
-
-
Stephen Kelly authored
-
Stephen Kelly authored
-
Stephen Kelly authored
-
- 23 Aug, 2015 4 commits
-
-
Stephen Kelly authored
-
Stephen Kelly authored
-
Stephen Kelly authored
Match the scopes currently used in cmMakefile for definitions.
-
Stephen Kelly authored
For completeness mostly.
-
- 21 Aug, 2015 1 commit
-
- 02 Aug, 2015 3 commits
-
-
Stephen Kelly authored
Implement lexical scope checking in terms of the state stack instead of barriers.
-
Stephen Kelly authored
At generate time, variables and policies are determined from the end state of the cmMakefile.
-
Stephen Kelly authored
-
- 01 Aug, 2015 2 commits
-
-
Stephen Kelly authored
This was added at a time when I thought the cmState would report errors, but that is not the direction it is going. The ordering of the stack of scopes is canonical and clients are required to maintain it.
-
Stephen Kelly authored
-
- 25 Jul, 2015 2 commits
-
-
Stephen Kelly authored
-
Delay use of the PositionType constructor until after SnapshotDataType is fully defined.
-