From 1fe2c0324006165b0c39ece0ccd7509e19583054 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Fri, 30 Nov 2018 10:02:04 +1100 Subject: Remove `tokenstream::Delimited`. Because it's an extra type layer that doesn't really help; in a couple of places it actively gets in the way, and overall removing it makes the code nicer. It does, however, move `tokenstream::TokenTree` further away from the `TokenTree` in `quote.rs`. More importantly, this change reduces the size of `TokenStream` from 48 bytes to 40 bytes on x86-64, which is enough to slightly reduce instruction counts on numerous benchmarks, the best by 1.5%. Note that `open_tt` and `close_tt` have gone from being methods on `Delimited` to associated methods of `TokenTree`. --- src/libsyntax_ext/proc_macro_server.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/libsyntax_ext') diff --git a/src/libsyntax_ext/proc_macro_server.rs b/src/libsyntax_ext/proc_macro_server.rs index 6c7da589a42..a04d6c92b78 100644 --- a/src/libsyntax_ext/proc_macro_server.rs +++ b/src/libsyntax_ext/proc_macro_server.rs @@ -64,11 +64,11 @@ impl FromInternal<(TokenStream, &'_ ParseSess, &'_ mut Vec)> let (tree, joint) = stream.as_tree(); let (span, token) = match tree { - tokenstream::TokenTree::Delimited(span, delimed) => { - let delimiter = Delimiter::from_internal(delimed.delim); + tokenstream::TokenTree::Delimited(span, delim, tts) => { + let delimiter = Delimiter::from_internal(delim); return TokenTree::Group(Group { delimiter, - stream: delimed.tts.into(), + stream: tts.into(), span, }); } @@ -232,10 +232,8 @@ impl ToInternal for TokenTree { }) => { return tokenstream::TokenTree::Delimited( span, - tokenstream::Delimited { - delim: delimiter.to_internal(), - tts: stream.into(), - }, + delimiter.to_internal(), + stream.into(), ) .into(); } -- cgit 1.4.1-3-g733a5