Auto merge of #53824 - ljedrz:begone_onevector, r=michaelwoerister
Remove OneVector, increase related SmallVec capacities Removes the `OneVector` type alias (equivalent to `SmallVec<[T; 1]>`); it is used in scenarios where the capacity of 1 is often exceeded, which might be nullifying the performance wins (due to spilling to the heap) expected when using `SmallVec` instead of `Vec`. The numbers I used in this PR are very rough estimates - it would probably be a good idea to adjust some/all of them, which is what this proposal is all about. It might be a good idea to additionally create some local type aliases for the `SmallVec`s in the `Folder` trait, as they are repeated in quite a few spots; I'd be happy to apply this sort of adjustments.
This commit is contained in:
commit
c3a1a0d340
22 changed files with 134 additions and 177 deletions
|
|
@ -17,9 +17,10 @@ extern crate syntax;
|
|||
extern crate rustc;
|
||||
extern crate rustc_data_structures;
|
||||
extern crate rustc_plugin;
|
||||
#[macro_use] extern crate smallvec;
|
||||
extern crate syntax_pos;
|
||||
|
||||
use rustc_data_structures::small_vec::OneVector;
|
||||
use smallvec::SmallVec;
|
||||
use syntax::ext::base::{ExtCtxt, MacResult, MacEager};
|
||||
use syntax::tokenstream;
|
||||
use rustc_plugin::Registry;
|
||||
|
|
@ -31,8 +32,8 @@ pub fn plugin_registrar(reg: &mut Registry) {
|
|||
|
||||
fn expand(cx: &mut ExtCtxt, _: syntax_pos::Span, _: &[tokenstream::TokenTree])
|
||||
-> Box<MacResult+'static> {
|
||||
MacEager::items(OneVector::from_vec(vec![
|
||||
MacEager::items(smallvec![
|
||||
quote_item!(cx, struct Struct1;).unwrap(),
|
||||
quote_item!(cx, struct Struct2;).unwrap()
|
||||
]))
|
||||
])
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue