diff options
| author | bors <bors@rust-lang.org> | 2018-05-05 08:52:28 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-05-05 08:52:28 +0000 |
| commit | e471c206cf472b54acee83a231560e16c439ab63 (patch) | |
| tree | 24412b154dfa2cb2a000ec4489dd147f88fe5d29 /src/test/incremental/thinlto | |
| parent | fc6b2c5fefa3e8793a5cab00a2d354d79137a306 (diff) | |
| parent | 7cf142f78b82b0b2ae08b52ccb6a6e15c0270c38 (diff) | |
| download | rust-e471c206cf472b54acee83a231560e16c439ab63.tar.gz rust-e471c206cf472b54acee83a231560e16c439ab63.zip | |
Auto merge of #50418 - nnethercote:cmt, r=eddyb
Avoid many `cmt` allocations. `cmt` is a ref-counted wrapper around `cmt_` The use of refcounting keeps `cmt` handling simple, but a lot of `cmt` instances are very short-lived, and heap-allocating the short-lived ones takes up time. This patch changes things in the following ways. - Most of the functions that produced `cmt` instances now produce `cmt_` instances. The `Rc::new` calls that occurred within those functions now occur at their call sites (but only when necessary, which isn't that often). - Many of the functions that took `cmt` arguments now take `&cmt_` arguments. This includes all the methods in the `Delegate` trait. As a result, the vast majority of the heap allocations are avoided. In an extreme case, the number of calls to malloc in tuple-stress drops from 9.9M to 7.9M, a drop of 20%. And the compile times for many runs of coercions, deep-vector, and tuple-stress drop by 1--2%.
Diffstat (limited to 'src/test/incremental/thinlto')
0 files changed, 0 insertions, 0 deletions
