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.