Improve doc for CAS on structures

Clarify both the current state and the intent, which is to potentially
support raw slots.

Reviewed by CSR
This commit is contained in:
Douglas Katzman 2020-02-06 13:35:27 -05:00
parent 0bf2b6e995
commit 2ee5179986
2 changed files with 10 additions and 4 deletions

View file

@ -168,7 +168,12 @@ call to the constructor is bound to a variable declared
@code{dynamic-extent}.
@strong{Note}: structures with ``raw'' slots can currently be
stack-allocated only on x86 and x86-64.
stack-allocated only on x86 and x86-64. A ``raw'' slot is one whose
declared type is a subtype of exactly one of: @code{double-float},
@code{single-float}, @code{(complex double-float)}, @code{(complex single-float)},
or @code{sb-ext:word}; but as an exception to the preceding, any subtype
of @code{fixnum} is not stored as raw despite also being a subtype
of @code{sb-ext:word}.
@item
all of the above when they appear as initial parts of another

View file

@ -210,9 +210,10 @@ whose CAR is one of the following:
CAR, CDR, FIRST, REST, SVREF, SYMBOL-PLIST, SYMBOL-VALUE, SVREF, SLOT-VALUE
SB-MOP:STANDARD-INSTANCE-ACCESS, SB-MOP:FUNCALLABLE-STANDARD-INSTANCE-ACCESS,
or the name of a DEFSTRUCT created accessor for a slot whose declared type is
either FIXNUM or T. Results are unspecified if the slot has a declared type
other than FIXNUM or T.
or the name of a DEFSTRUCT created accessor for a slot whose storage type
is not raw. (Refer to the the \"Efficiency\" chapter of the manual
for the list of raw slot types. Future extensions to this macro may allow
it to work on some raw slot types.)
In case of SLOT-VALUE, if the slot is unbound, SLOT-UNBOUND is called unless
OLD is EQ to SB-PCL:+SLOT-UNBOUND+ in which case SB-PCL:+SLOT-UNBOUND+ is