Skip to content
Permalink
Browse files

syntax_pos: Optimize symbol interner pre-filling slightly

  • Loading branch information...
petrochenkov committed May 10, 2019
1 parent 0ac53da commit aeee1fb1f250accccd85f8d7f7a501ed81db68e8
Showing with 10 additions and 9 deletions.
  1. +10 −9 src/libsyntax_pos/symbol.rs
@@ -453,15 +453,16 @@ pub struct Interner {
impl Interner {
fn prefill(init: &[&str]) -> Self {
let mut this = Interner::default();
for &string in init {
if string == "" {
// We can't allocate empty strings in the arena, so handle this here.
let name = Symbol::new(this.strings.len() as u32);
this.names.insert("", name);
this.strings.push("");
} else {
this.intern(string);
}
this.names.reserve(init.len());
this.strings.reserve(init.len());

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

for string in &init[1..] {
this.intern(string);
}
this
}

0 comments on commit aeee1fb

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