1.0.29.54: Inline unboxed constants on x86[-64]
commit2230ea0c1765a95fd2aa0a8996b3555b93ba3745
authorPaul Khuong <pvk@pvk.ca>
Sun, 28 Jun 2009 21:37:05 +0000 (28 21:37 +0000)
committerPaul Khuong <pvk@pvk.ca>
Sun, 28 Jun 2009 21:37:05 +0000 (28 21:37 +0000)
tree81f09bdbf41ad99ed471cb9ec1be831dca151005
parent485944b1d04b8f3381a04bc6291bc2e667442e45
1.0.29.54: Inline unboxed constants on x86[-64]

* New build-time feature: inline-constants, which specifies that SB!C
  and SB!VM implement a protocol described in base-target-features.lisp-expr.
  Backends implementing that feature are able to load constants from code
  components, in a section that follows the actual executable code.

* Implement the protocol on x86 and x86-64, and use it for float constants,
  and, on x86-64 only, mid-sized (> 2^(29-32), but still machine-sized)
  integers.

* Use the new feature in integer and float arithmetic VOPs.

* Adjust a few test cases to take newly consing situations into account.

* Clean-up:
  - New build-time feature: float-eql-vops, which disable rewriting EQL
    of single and double floats in terms of foo-float*-bits.
  - Fix a typo (unused variable lookup) in TWO-ARG-+/-
22 files changed:
NEWS
base-target-features.lisp-expr
make-config.sh
package-data-list.lisp-expr
src/code/numbers.lisp
src/compiler/codegen.lisp
src/compiler/early-c.lisp
src/compiler/generic/vm-macs.lisp
src/compiler/generic/vm-tran.lisp
src/compiler/main.lisp
src/compiler/x86-64/arith.lisp
src/compiler/x86-64/float.lisp
src/compiler/x86-64/insts.lisp
src/compiler/x86-64/vm.lisp
src/compiler/x86/float.lisp
src/compiler/x86/insts.lisp
src/compiler/x86/vm.lisp
tests/arith.pure.lisp
tests/compiler.impure.lisp
tests/dynamic-extent.impure.lisp
tests/float.pure.lisp
version.lisp-expr