From: Douglas K. <sn...@us...> - 2014-12-16 04:49:49
|
The branch "master" has been updated in SBCL: via 65474ed6895f75201ba8ea99fb83423db21e41b3 (commit) from 66fc1e03cb3508f4b099e63eff76ccf1d5a3943e (commit) - Log ----------------------------------------------------------------- commit 65474ed6895f75201ba8ea99fb83423db21e41b3 Author: Douglas Katzman <do...@go...> Date: Mon Dec 15 16:46:35 2014 -0500 Add comment --- src/code/defstruct.lisp | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/src/code/defstruct.lisp b/src/code/defstruct.lisp index 9390b05..c01cf5c 100644 --- a/src/code/defstruct.lisp +++ b/src/code/defstruct.lisp @@ -1251,6 +1251,15 @@ unless :NAMED is also specified."))) ;; the object as indicated in the header, so the pad word needs to be ;; included in that length to guarantee proper alignment of raw double float ;; slots, necessary for (at least) the SPARC backend. + ;; On backends with interleaved raw slots, the convention of having the + ;; header possibly "lie" about an extra word is more of a bug than a feature. + ;; Because the structure base is aligned, double-word raw slots are properly + ;; aligned, and won't change alignment in descendant object types. It would + ;; be correct to store the true instance length even though GC preserves + ;; the extra data word (as it does for odd-length SIMPLE-VECTOR), treating + ;; the total physical length as rounded-to-even. But having two different + ;; conventions would be even more unnecessarily confusing, so we use + ;; the not-sensible convention even when it does not make sense. (logior (dd-layout-length dd) 1)) (defun dd-bitmap (dd) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |