Improve EMIT-MAKE-LOAD-FORM of non-EQL-comparable named constants.
commitc7791afe760ed1f05b0c8466d37f6f30c590438f
authorDouglas Katzman <dougk@google.com>
Thu, 25 Feb 2016 00:12:52 +0000 (24 19:12 -0500)
committerDouglas Katzman <dougk@google.com>
Thu, 25 Feb 2016 00:42:55 +0000 (24 19:42 -0500)
tree1c3e25b5ac2035a878520b72334a46f8c4a1d7a8
parenteb97061687a8ea8fa74dff999ebb06e431fbe905
Improve EMIT-MAKE-LOAD-FORM of non-EQL-comparable named constants.

- We can avoid compiling (LAMBDA () A-CONSTANT) into machine code,
  since a fop-funcall of SYMBOL-GLOBAL-VALUE works just as well.

- Once you do that, things like SINGLE-FLOAT-EXPONENT-BYTE are
  referenced as such, even in the cross-compiler. So then
  we must teach genesis that (DEFCONSTANT-EQX foo (byte 1 2))
  can assign FOO its proper value during cold-load. Otherwise it
  delays until cold-init, which would require yet another fixup.

Limitation: DEFCONSTANT-EQX in a :NOT-HOST file does not work.
It could be made to work probably, but the only use was for
+BARRIER-KIND-FUNCTIONS+ which didn't really need it urgently.
package-data-list.lisp-expr
src/code/barrier.lisp
src/code/cold-init.lisp
src/code/defbangconstant.lisp
src/compiler/fopcompile.lisp
src/compiler/generic/genesis.lisp
src/compiler/main.lisp