diff options
| author | bors <bors@rust-lang.org> | 2018-05-20 08:55:50 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-05-20 08:55:50 +0000 |
| commit | 4c26e2e3fba61f18caca8bd43c57e1f1d799f07b (patch) | |
| tree | d6c8437e0fd5aff8c306a193338b1fd25f4ef140 /src/libsyntax/parse/mod.rs | |
| parent | ccb5e973f7546cef6c389a5378cdfbf2fcb595f1 (diff) | |
| parent | ad471452ba6fbbf91ad566dc4bdf1033a7281811 (diff) | |
| download | rust-4c26e2e3fba61f18caca8bd43c57e1f1d799f07b.tar.gz rust-4c26e2e3fba61f18caca8bd43c57e1f1d799f07b.zip | |
Auto merge of #50855 - nnethercote:fewer-macro_parser-allocs, r=petrochenkov
Speed up the macro parser
These three commits reduce the number of allocations done by the macro parser, in some cases dramatically. For example, for a clean check builds of html5ever, the number of allocations is reduced by 40%.
Here are the rustc-benchmarks that are sped up by at least 1%.
```
html5ever-check
avg: -6.6% min: -10.3% max: -4.1%
html5ever
avg: -5.2% min: -9.5% max: -2.8%
html5ever-opt
avg: -4.3% min: -9.3% max: -1.6%
crates.io-check
avg: -1.8% min: -2.9% max: -0.6%
crates.io-opt
avg: -1.0% min: -2.2% max: -0.1%
crates.io
avg: -1.1% min: -2.2% max: -0.2%
```
Diffstat (limited to 'src/libsyntax/parse/mod.rs')
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index f26a6a53074..0abedb99bd0 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -23,6 +23,7 @@ use symbol::Symbol; use tokenstream::{TokenStream, TokenTree}; use diagnostics::plugin::ErrorMap; +use std::borrow::Cow; use std::collections::HashSet; use std::iter; use std::path::{Path, PathBuf}; @@ -89,8 +90,8 @@ impl ParseSess { } #[derive(Clone)] -pub struct Directory { - pub path: PathBuf, +pub struct Directory<'a> { + pub path: Cow<'a, Path>, pub ownership: DirectoryOwnership, } |
