1.0.27.40: host-invariant string constant coalescing
authorChristophe Rhodes <csr21@cantab.net>
Fri, 24 Apr 2009 14:26:30 +0000 (14:26 +0000)
committerChristophe Rhodes <csr21@cantab.net>
Fri, 24 Apr 2009 14:26:30 +0000 (14:26 +0000)
commit8f45dd3a5a074998e1aa697ba8f2a8b1b7388427
tree40440d2d3818b7bf7938d9e643a4db1d5c34693b
parent1e7fc4730aa0cafb0aba5278e8cdbdba566b8725
1.0.27.40: host-invariant string constant coalescing

It took a little time to get right, but here's (I hope) invariant
constant string coalescing in the cross-file-compiler.

3 commit messages follow:

more invariant constant string coalescing

When dumping strings in cross-compilation, we always end up dumping as
base-string.  That means we need to compare all strings of whatever
underlying array type for content equality, not just strings of the same
type.  This shows up when dumping in the same file "BLOCK" and the value
of (symbol-name 'block) under CLISP, which dumps two separate values.

dumping string constants, the other half

Not only do we have to enter entries into the hash table with a known
element-type, we also have to retrieve them... bogosity finally picked
up by use of a CL symbol name (AND) in src/compiler/x86/insts.lisp...

further refinement on constant coalescing

Not only must we coalesce all kinds of strings at fasl dump time, we
must coalesce the constants in our TN representation while we're
compiling, otherwise we will get different lengths of constant vectors
for the same function depending on how many different string
representations there are in the host compiler.
src/compiler/dump.lisp
src/compiler/ir1util.lisp
version.lisp-expr