Combine changelog entries.
This commit is contained in:
parent
c4cfe310db
commit
f904488ff4
1 changed files with 9 additions and 23 deletions
|
@ -1,15 +1,5 @@
|
|||
2011-04-25 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* lisp.h: (XVECTOR_SIZE): Remove. All uses replaced with ASIZE.
|
||||
(ASIZE): Now contains previous implementation of XVECTOR_SIZE
|
||||
instead of invoking XVECTOR_SIZE.
|
||||
(XVECTORLIKE_HEADER_SIZE): Remove. The only use is now expanded.
|
||||
|
||||
* lisp.h: Say "vectorlike header" rather than "vector header.
|
||||
(struct vectorlike_header): Rename from struct vector_header.
|
||||
(XVECTORLIKE_HEADER_SIZE): Renamed from XVECTOR_HEADER_SIZE.
|
||||
All uses changed.
|
||||
|
||||
lisp.h: Fix a problem with aliasing and vector headers.
|
||||
GCC 4.6.0 optimizes based on type-based alias analysis. For
|
||||
example, if b is of type struct buffer * and v of type struct
|
||||
|
@ -18,36 +8,32 @@
|
|||
v->size;" must therefore return 1. This assumption is incorrect
|
||||
for Emacs, since it type-puns struct Lisp_Vector * with many other
|
||||
types. To fix this problem, this patch adds a new type struct
|
||||
vector_header that documents the constraints on layout of vectors
|
||||
vectorlike_header that documents the constraints on layout of vectors
|
||||
and pseudovectors, and helps optimizing compilers not get fooled
|
||||
by Emacs's type punning. It also adds the macros XSETTYPED_PVECTYPE
|
||||
XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
|
||||
* lisp.h (XVECTOR_SIZE): New convenience macro. All previous uses of
|
||||
XVECTOR (foo)->size replaced to use this macro, to avoid the hassle
|
||||
of writing XVECTOR (foo)->header.size.
|
||||
(XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
|
||||
(XSETTYPED_PVECTYPE): New macro, specifying the name of the size
|
||||
member.
|
||||
* lisp.h (XSETTYPED_PVECTYPE): New macro, specifying the name of
|
||||
the size member.
|
||||
(XSETPVECTYPE): Rewrite in terms of new macro.
|
||||
(XSETPVECTYPESIZE): New macro, specifying both type and size.
|
||||
This is a bit clearer, and further avoids the possibility of
|
||||
undesirable aliasing.
|
||||
(XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
|
||||
(XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
|
||||
and XVECTOR_HEADER_SIZE.
|
||||
(XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR.
|
||||
(XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
|
||||
since Lisp_Subr is a special case (no "next" field).
|
||||
(ASIZE): Rewrite in terms of XVECTOR_SIZE.
|
||||
(struct vector_header): New type.
|
||||
(ASIZE): Now uses header.size rather than size. All
|
||||
previous uses of XVECTOR (foo)->size replaced to use this macro,
|
||||
to avoid the hassle of writing XVECTOR (foo)->header.size.
|
||||
(struct vectorlike_header): New type.
|
||||
(TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
|
||||
object, to help avoid aliasing.
|
||||
(PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
|
||||
(SUBRP): Likewise, since Lisp_Subr is a special case.
|
||||
|
||||
* lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
|
||||
(struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
|
||||
(struct Lisp_Hash_Table): Combine first two members into a single
|
||||
struct vector_header member. All uses of "size" and "next" members
|
||||
struct vectorlike_header member. All uses of "size" and "next" members
|
||||
changed to be "header.size" and "header.next".
|
||||
* buffer.h (struct buffer): Likewise.
|
||||
* font.h (struct font_spec, struct font_entity, struct font): Likewise.
|
||||
|
|
Loading…
Add table
Reference in a new issue