1.0.17.4: support for dynamic-extent structures
commit96bb2dc76dddb1a21b3886fa7522796879e9ed9d
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 28 May 2008 22:32:28 +0000 (28 22:32 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 28 May 2008 22:32:28 +0000 (28 22:32 +0000)
tree6282ec096f47436db7af5b863e4b9e2e001ac52c
parent6075b05401346ac20ec9a647fe192a2a959f3882
1.0.17.4: support for dynamic-extent structures

 * Replace %MAKE-INSTANCE-WITH-LAYOUT with %MAKE-STRUCTURE-INSTANCE,
   which has an IR2 transform that can handle both initialization and
   allocation of the structure. On x86 and x86-64 it can initialize
   all slots, whereas on other platforms it only does the layout and
   non-raw slots. (See RAW-INSTANCE-INIT/* below.)

 * EMIT-INITS needs two new kinds of inits to handle: :SLOT for
   instance slots, and :DD for the defstruct-description/layout.

 * DEF-ALLOC doesn't anymore use a simple boolean for denoting
   variable length allocation, but instead a keyword: either
   :VAR-ALLOC, :FIXED-ALLOC, or :STRUCTURE-ALLOC.

 * New VOPs: RAW-INSTANCE-INIT/* for all raw slot types, which are
   almost identical to RAW-INSTANCE-SET[-C]/* VOPs, except that they
   always have a constant index and do not return a result. Structures
   with raw slots can be stack allocated only on platforms that
   implement these VOPs, denoted in make-config.sh by the
   :RAW-INSTANCE-INIT-VOPS feature. ...we really could use a
   *VM-FEATURES* or something.
16 files changed:
NEWS
make-config.sh
package-data-list.lisp-expr
src/code/defstruct.lisp
src/code/target-defstruct.lisp
src/compiler/fun-info-funs.lisp
src/compiler/generic/vm-fndb.lisp
src/compiler/generic/vm-ir2tran.lisp
src/compiler/generic/vm-macs.lisp
src/compiler/x86-64/cell.lisp
src/compiler/x86/cell.lisp
src/compiler/x86/macros.lisp
src/pcl/std-class.lisp
tests/defstruct.impure.lisp
tests/dynamic-extent.impure.lisp
version.lisp-expr