Commit [96bb2d] Maximize Restore History

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.

Nikodemus Siivola Nikodemus Siivola 2008-05-28

changed src/code/defstruct.lisp
changed src/code/target-defstruct.lisp
changed src/compiler/generic/vm-fndb.lisp
changed src/compiler/generic/vm-ir2tran.lisp
changed src/compiler/generic/vm-macs.lisp
changed src/compiler/x86-64/cell.lisp
changed src/compiler/x86/cell.lisp
changed src/compiler/x86/macros.lisp
changed src/compiler/fun-info-funs.lisp
changed src/pcl/std-class.lisp
changed tests/defstruct.impure.lisp
changed tests/dynamic-extent.impure.lisp
changed NEWS
changed make-config.sh
changed package-data-list.lisp-expr
changed version.lisp-expr
src/code/defstruct.lisp Diff Switch to side-by-side view
Loading...
src/code/target-defstruct.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/vm-fndb.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/vm-ir2tran.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/x86-64/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/fun-info-funs.lisp Diff Switch to side-by-side view
Loading...
src/pcl/std-class.lisp Diff Switch to side-by-side view
Loading...
tests/defstruct.impure.lisp Diff Switch to side-by-side view
Loading...
tests/dynamic-extent.impure.lisp Diff Switch to side-by-side view
Loading...
NEWS Diff Switch to side-by-side view
Loading...
make-config.sh Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...
version.lisp-expr Diff Switch to side-by-side view
Loading...