Skip to content
Permalink
Browse files

Rollup merge of rust-lang#61077 - nnethercote:tweak-prefill, r=petroc…

…henkov

Don't arena-allocate static symbols.

It's just a waste of memory. This also gets rid of the special case for
"".

r? @petrochenkov
  • Loading branch information...
Centril committed May 24, 2019
2 parents fc45382 + e396f99 commit bd606ec3ff7ff9c74e81c211294eba7103bd76e5
Showing with 6 additions and 13 deletions.
  1. +6 −13 src/libsyntax_pos/symbol.rs
@@ -866,20 +866,13 @@ pub struct Interner {
}

impl Interner {
fn prefill(init: &[&str]) -> Self {
let mut this = Interner::default();
this.names.reserve(init.len());
this.strings.reserve(init.len());

// We can't allocate empty strings in the arena, so handle this here.
assert!(kw::Invalid.as_u32() == 0 && init[0].is_empty());
this.names.insert("", kw::Invalid);
this.strings.push("");

for string in &init[1..] {
this.intern(string);
fn prefill(init: &[&'static str]) -> Self {
let symbols = (0 .. init.len() as u32).map(Symbol::new);
Interner {
strings: init.to_vec(),
names: init.iter().copied().zip(symbols).collect(),
..Default::default()
}
this
}

pub fn intern(&mut self, string: &str) -> Symbol {

0 comments on commit bd606ec

Please sign in to comment.
You can’t perform that action at this time.