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:
parent
b755501043
commit
0f68749260
3 changed files with 46 additions and 22 deletions
|
@ -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())))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue