What I didn’t do yet:
- I’m not sure it’s still reasonable to get rid of
ctxt
(previouslyexpn_id
) in spans and move its data to codemap, because now it contains hygiene information in addition to macro expansion data. -
span.lo
is very non-optimal, it’s a huge offset in a codemap including all files in the crate. If the file itself is tiny it still can get huge offset and avoid inlining. If something likefile_local_offset + file_id
was used instead, it would radically reduced number of bits required to representbase
, which is currently the most space-demanding component of inlined spans. (I’d expect 24-bit spans to become usable or percentage of spans representable with 32 bits to jump into 90%s).