Better sharing of symbol print-names.
commit455e207d461735fd6da1cbdfdcd9b23a32da2d4a
authorDouglas Katzman <dougk@google.com>
Thu, 4 May 2017 15:59:14 +0000 (4 11:59 -0400)
committerDouglas Katzman <dougk@google.com>
Thu, 4 May 2017 17:08:36 +0000 (4 13:08 -0400)
tree1b4b32e0995fa07342c6a6cb6ae0d9761243acf7
parent54377a283616be8c4115dfd278240695433a78ad
Better sharing of symbol print-names.

Do more thorough collapsing because:
"X3J13 voted in March 1989 to specify that it is an error
to modify a string being used as the print name of a symbol."
and remove logic from Genesis that did the same thing.

Also prefer to use base strings in the common pattern of
(INTERN (FORMAT NIL "~A-~A")). While it would be nicer to have INTERN
always pick the minimal space representation no matter what,
it seems like some people think that (INTERN "FOO") - though permitted
to copy "FOO" - must copy to the same type string, which is unspecified
as far as I can tell. That said, it's unarguable that (FORMAT NIL ...)
produces any particular type of string.
And this saved us >7MB in our application, so ... there you go.
package-data-list.lisp-expr
src/code/early-extensions.lisp
src/code/string.lisp
src/code/symbol.lisp
src/code/target-package.lisp
src/compiler/generic/early-vm.lisp
src/compiler/generic/genesis.lisp
src/compiler/generic/vm-tran.lisp
src/runtime/gc-common.c