swc uses a special technique copied from
rustc to store identifers and spans compactly.
However, it's memory-performance tradeoff, and encoding and decoding is not super fast operation.
So, while parsing, swc use un-compact version of span, and uses compact version of span after parsing.
The make parser much faster.
swc's core module to support merging multiple file into a file.
Because of the design,
swc used a concurrent data structures while generating code.
But it was not enough for performance. I added a cache layer related to source map, and the layer makes swc much faster