Commit [45bc30] Maximize Restore History

1.0.17.24: refactor handling of constants in the compiler

* Coalesce non-circular lists, bit-vectors, and non-base-strings in the
file-compiler. (We could do more, but these are the "easy" ones.) Takes
care of OPTIMIZATIONS #34 in practice: outside the file compiler one can
still trick the system into similar behaviour, but that seems a fairly
academic concern.

* Never go through SYMBOL-VALUE at runtime to fetch the value of a constant
variable in compiled code.

* Use (SYMBOL-VALUE <NAME>) as the load-form to dump references to named
constants into fasls.

* Signal a continuable error if an attempt to change the SYMBOL-VALUE of a
constant variable is made.

* Assignments to undefined variables go through SET, so that one
cannot accidentally modify a constant by doing something like:

(defun set-foo (x) (setq foo x))
(defconstant foo 42)
(set-foo 13)

* Gets rid of INFO :VARIABLE :CONSTANT-VALUE, and just uses SYMBOL-VALUE to
store constant values.

* Move definition of SB!XC:LAMBDA-LIST-KEYWORDS to be beginning of the build,
and use it instead of the host LAMBDA-LIST-KEYWORDS where appropriate.

* Tests.

Nikodemus Siivola Nikodemus Siivola 2008-06-04

1 2 > >> (Page 1 of 2)
added src/code/early-constants.lisp
changed src/code/defboot.lisp
changed src/code/early-extensions.lisp
changed src/code/eval.lisp
changed src/code/late-extensions.lisp
changed src/code/symbol.lisp
changed src/code/target-alieneval.lisp
changed src/code/target-package.lisp
changed src/compiler/generic/genesis.lisp
changed src/compiler/generic/vm-macs.lisp
changed src/compiler/constantp.lisp
changed src/compiler/defconstant.lisp
changed src/compiler/early-c.lisp
changed src/compiler/globaldb.lisp
changed src/compiler/ir1-translators.lisp
changed src/compiler/ir1tran.lisp
changed src/compiler/ir1util.lisp
changed src/compiler/ir2tran.lisp
changed src/compiler/ltn.lisp
changed src/compiler/main.lisp
changed src/compiler/node.lisp
changed src/compiler/proclaim.lisp
changed src/pcl/walk.lisp
changed tests/compiler.impure.lisp
changed tests/info.before-xc.lisp
src/code/early-constants.lisp Diff Switch to side-by-side view
Loading...
src/code/defboot.lisp Diff Switch to side-by-side view
Loading...
src/code/early-extensions.lisp Diff Switch to side-by-side view
Loading...
src/code/eval.lisp Diff Switch to side-by-side view
Loading...
src/code/late-extensions.lisp Diff Switch to side-by-side view
Loading...
src/code/symbol.lisp Diff Switch to side-by-side view
Loading...
src/code/target-alieneval.lisp Diff Switch to side-by-side view
Loading...
src/code/target-package.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/genesis.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/vm-macs.lisp Diff Switch to side-by-side view
Loading...
src/compiler/constantp.lisp Diff Switch to side-by-side view
Loading...
src/compiler/defconstant.lisp Diff Switch to side-by-side view
Loading...
src/compiler/early-c.lisp Diff Switch to side-by-side view
Loading...
src/compiler/globaldb.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir1-translators.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir1tran.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir1util.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir2tran.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ltn.lisp Diff Switch to side-by-side view
Loading...
src/compiler/main.lisp Diff Switch to side-by-side view
Loading...
src/compiler/node.lisp Diff Switch to side-by-side view
Loading...
src/compiler/proclaim.lisp Diff Switch to side-by-side view
Loading...
src/pcl/walk.lisp Diff Switch to side-by-side view
Loading...
tests/compiler.impure.lisp Diff Switch to side-by-side view
Loading...
tests/info.before-xc.lisp Diff Switch to side-by-side view
Loading...
1 2 > >> (Page 1 of 2)