Add :compact-instance-header feature for x86-64.
commit215e81a7a30d6540db1e42193ed6936850a81b9e
authorDouglas Katzman <dougk@google.com>
Thu, 13 Oct 2016 23:33:27 +0000 (13 19:33 -0400)
committerDouglas Katzman <dougk@google.com>
Thu, 13 Oct 2016 23:33:27 +0000 (13 19:33 -0400)
tree8da82605a0a195c1914957729eb580475da03e9f
parentecac4a456331b0807b77193f294092c4dfc62048
Add :compact-instance-header feature for x86-64.

This is part 2 of 4 of the overall immobile space feature.
The immobile allocator places all layouts below 4GB so that
a 32-bit pointer suffices to address them, which in turn allows
stuffing a layout pointer into an instance header.
In practical terms this yields either a 0-word or 2-word reduction
in the number of slots, depending on presence of trailing padding.

The feature is enabled by default on supported platforms.
20 files changed:
NEWS
base-target-features.lisp-expr
make-config.sh
src/code/defstruct.lisp
src/code/early-classoid.lisp
src/cold/shared.lisp
src/compiler/early-c.lisp
src/compiler/generic/early-vm.lisp
src/compiler/generic/genesis.lisp
src/compiler/generic/vm-ir2tran.lisp
src/compiler/generic/vm-tran.lisp
src/compiler/x86-64/alloc.lisp
src/compiler/x86-64/cell.lisp
src/runtime/gc-common.c
src/runtime/marknsweepgc.c
src/runtime/print.c
src/runtime/runtime.h
tests/macroexpand.impure.lisp
tests/raw-slots-interleaved.impure.lisp
tests/system.impure.lisp