Use a newtype_index! within Symbol.

This shrinks `Option<Symbol>` from 8 bytes to 4 bytes, which shrinks
`Token` from 24 bytes to 16 bytes. This reduces instruction counts by up
to 1% across a range of benchmarks.
This commit is contained in:
Nicholas Nethercote 2018-12-11 09:06:51 +11:00
parent b755501043
commit 0f68749260
3 changed files with 46 additions and 22 deletions

View file

@ -207,6 +207,10 @@ pub enum Token {
Eof,
}
// `Token` is used a lot. Make sure it doesn't unintentionally get bigger.
#[cfg(target_arch = "x86_64")]
static_assert!(MEM_SIZE_OF_STATEMENT: mem::size_of::<Token>() == 16);
impl Token {
pub fn interpolated(nt: Nonterminal) -> Token {
Token::Interpolated(Lrc::new((nt, LazyTokenStream::new())))