Plug up leaky abstraction that (%INSTANCE-REF struct 0) is a LAYOUT.
commit10cc646b9e68604bdcee598c31a721905f55f333
authorDouglas Katzman <dougk@google.com>
Wed, 7 Jan 2015 03:55:37 +0000 (6 22:55 -0500)
committerDouglas Katzman <dougk@google.com>
Wed, 7 Jan 2015 03:55:37 +0000 (6 22:55 -0500)
treed62ed392832e7c2ac1a75e0c7eec7a31d3b10d0b
parent57858cc34c7ddc1e5102c52bf74767e18611c32a
Plug up leaky abstraction that (%INSTANCE-REF struct 0) is a LAYOUT.

This is part 1 of the compact-instance-feature change, and motivated by
the design as sketched out in doc/internals-notes/compact-instance.

%INSTANCE-REF 0 was generally assumed to access an object's layout,
but this won't be true in general.  Moreover, DO-INSTANCE-TAGGED-SLOT
won't scan an instance's layout, so any code that wanted to iterate over
all defined slots plus layout now needs to read the layout separately.

Additionally, gencgc has been made to use instance_length() and
instance_layout() accessors.
24 files changed:
contrib/sb-introspect/introspect.lisp
doc/internals-notes/compact-instance [new file with mode: 0644]
doc/internals-notes/non-moving-gc [new file with mode: 0644]
package-data-list.lisp-expr
src/code/defbangstruct.lisp
src/code/defstruct.lisp
src/code/early-raw-slots.lisp
src/code/fop.lisp
src/code/pred.lisp
src/code/room.lisp
src/code/sharpm.lisp
src/code/target-defstruct.lisp
src/code/target-sxhash.lisp
src/compiler/dump.lisp
src/compiler/fopcompile.lisp
src/compiler/generic/early-vm.lisp
src/compiler/generic/genesis.lisp
src/compiler/generic/vm-tran.lisp
src/compiler/ir1tran.lisp
src/runtime/gc-common.c
src/runtime/gencgc.c
src/runtime/print.c
src/runtime/runtime.h
tests/raw-slots-interleaved.impure.lisp