On Tuesday, 24 May 2016 at 20:16:32 UTC, Walter Bright wrote:
On 5/24/2016 9:22 AM, Timon Gehr wrote:
Yes, it does. The compiler does not use exponential space to
store the AST.
BTW, all types in dmd have a 'deco' string which is the AST
linearized as a string. This string is also used to build the
mangled names.
All the deco's are put into a hashtable, and then all types can
be uniquely identified by their address in the hashtable. This
reduces type comparisons to a single pointer comparison.
There's no reason not to use the compression in the deco name.
Just make sure the references are relative and you're set. No
exponential space to store the AST.
Please, if you change the ABI, do it right the first time. Some
arbitrary compression algorithm doesn't solve the problem.