aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph/nodeset.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Use nullptr to initialize the pointersDenis Shienkov2017-11-201-1/+1
| | | | | | Change-Id: I59d743f585410cb5c00d36a7b6f9a3e9d696d19e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Use a sorted vector rather than QSet or std::setChristian Kandeler2017-01-051-36/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | ========== Performance data for Resolving ========== Old instruction count: 2324724447 New instruction count: 2317712921 Relative change: -1 % Old peak memory usage: 21411584 Bytes New peak memory usage: 21070552 Bytes Relative change: -2 % ========== Performance data for Rule Execution ========== Old instruction count: 4231322611 New instruction count: 4246208129 Relative change: +0 % Old peak memory usage: 19239000 Bytes New peak memory usage: 18181072 Bytes Relative change: -6 % ========== Performance data for Null Build ========== Old instruction count: 542161499 New instruction count: 505511534 Relative change: -7 % Old peak memory usage: 13599040 Bytes New peak memory usage: 11892952 Bytes Relative change: -13 % Change-Id: I36b3dbd3fd2a4bc7503ee7779d31bd0217000785 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Use a vector instead of a set to hold build graph nodesChristian Kandeler2016-12-231-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | The set even loses in the purely instruction count based metric employed in our benchmarking tool. A quick test with a larger project shows no performance advantage of the set either. ========== Performance data for Rule Execution ========== Old instruction count: 3485129349 New instruction count: 3456144664 Relative change: -1 % Old peak memory usage: 17597368 Bytes New peak memory usage: 16750392 Bytes Relative change: -5 % ========== Performance data for Null Build ========== Old instruction count: 451359636 New instruction count: 439286904 Relative change: -3 % Old peak memory usage: 13141728 Bytes New peak memory usage: 12246952 Bytes Relative change: -7 % Change-Id: I8fead52f728e7078dade1f021fdb28017a17fe43 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* PersistentPool: Prevent access to raw data streamChristian Kandeler2016-12-161-6/+4
| | | | | | | | | | | | | | Instead, we employ our now-generic load/store interface for all serialization operations. The advantages are two-fold: 1) It can no longer happen that carelessly written store() functions mistakenly dump unshared strings into the build graph, as it has happened several times in the past. 2) We get rid of enormous amounts of custom code dealing with container (de)serialization. All of this is now done centrally by a handful of templates in PersistentPool. Change-Id: Ib1262da50989edda9726abd7d5a8ffdceaa0ec76 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fully templatize the PersistentPool classChristian Kandeler2016-12-151-2/+2
| | | | | | | | | | | The old implementation was a wild mix of templates, overloads and, worst of all, implicit assumptions about the types of container items. This combination made it close to impossible to add support for serializing generic containers. Now we have a sensible interface that we can build upon. Change-Id: I82806eaf535c16fc861bededf1b06c681d2128c0 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Update license headersIikka Eklund2016-08-291-14/+23
| | | | | | | | | | Patch-set 2 includes *.cpp *.c Every source file needs to have up-to-date license headers in order to pass ci. Change-Id: Ie6e493097af6f7dd6a8adff170eb856f496e689e Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Replace 'the Qt build suite' with 'Qbs' in copyright notices.Jake Petroules2016-06-061-1/+1
| | | | | | Change-Id: I885d94bb14b325dc36767a840ebdb0be1fb59dd2 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* make NodeSet implicitly sharedJoerg Bornemann2015-04-281-7/+3
| | | | | | | | | This enables us to use the foreach macro without deep-copying the container. Change-Id: I6eb5ff5874a5065ff4b89e6cbde2b78c6fb0a950 Task-number: QBS-778 Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* update license headersJoerg Bornemann2015-03-021-2/+2
| | | | | Change-Id: I36d825db3a5ef32c162c3063aab1e8a1f2696f4f Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* Update LicenseEike Ziller2015-01-261-6/+6
| | | | | Change-Id: I092fca9f950de1ba38826c33b155f86feae2770b Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* License update.Eike Ziller2014-10-161-7/+8
| | | | | | | Add LGPLv3 option. Change-Id: I8a63ad5e46a2701032b2103f791df4dec5b707e8 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* support transformers with an unknown number of outputsJoerg Bornemann2014-02-131-0/+93
To support different types of nodes in the build graph, we introduce the base class BuildGraphNode. Artifact now derives from BuildGraphNode. A RuleNode class is introduced that represents a rule in the build graph. Rules are applied in the build phase and not in a pre-build phase anymore. The handling of moc has been revisited. The fixed automoc pre-build phase is no more. This is the squashed merge of a feature branch. Task-number: QBS-370 Change-Id: If27cdc51cba8c9542e4282c2caa456faa723aeff Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>