aboutsummaryrefslogtreecommitdiffstats
path: root/src/ChangeLog
diff options
context:
space:
mode:
authorPaul Eggert2011-04-25 14:50:24 -0700
committerPaul Eggert2011-04-25 14:50:24 -0700
commitf904488ff40dcee3e340b63a6386dde124d1241c (patch)
tree6c99c6fdef20f4b3cffeb973fffa63c485e6606c /src/ChangeLog
parentc4cfe310db08a8605bc43bd58fe99a5d7ebbca9c (diff)
downloademacs-f904488ff40dcee3e340b63a6386dde124d1241c.tar.gz
emacs-f904488ff40dcee3e340b63a6386dde124d1241c.zip
Combine changelog entries.
Diffstat (limited to 'src/ChangeLog')
-rw-r--r--src/ChangeLog32
1 files changed, 9 insertions, 23 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 1adc153e953..87e703b3dab 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,15 +1,5 @@
12011-04-25 Paul Eggert <eggert@cs.ucla.edu> 12011-04-25 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * lisp.h: (XVECTOR_SIZE): Remove. All uses replaced with ASIZE.
4 (ASIZE): Now contains previous implementation of XVECTOR_SIZE
5 instead of invoking XVECTOR_SIZE.
6 (XVECTORLIKE_HEADER_SIZE): Remove. The only use is now expanded.
7
8 * lisp.h: Say "vectorlike header" rather than "vector header.
9 (struct vectorlike_header): Rename from struct vector_header.
10 (XVECTORLIKE_HEADER_SIZE): Renamed from XVECTOR_HEADER_SIZE.
11 All uses changed.
12
13 lisp.h: Fix a problem with aliasing and vector headers. 3 lisp.h: Fix a problem with aliasing and vector headers.
14 GCC 4.6.0 optimizes based on type-based alias analysis. For 4 GCC 4.6.0 optimizes based on type-based alias analysis. For
15 example, if b is of type struct buffer * and v of type struct 5 example, if b is of type struct buffer * and v of type struct
@@ -18,36 +8,32 @@
18 v->size;" must therefore return 1. This assumption is incorrect 8 v->size;" must therefore return 1. This assumption is incorrect
19 for Emacs, since it type-puns struct Lisp_Vector * with many other 9 for Emacs, since it type-puns struct Lisp_Vector * with many other
20 types. To fix this problem, this patch adds a new type struct 10 types. To fix this problem, this patch adds a new type struct
21 vector_header that documents the constraints on layout of vectors 11 vectorlike_header that documents the constraints on layout of vectors
22 and pseudovectors, and helps optimizing compilers not get fooled 12 and pseudovectors, and helps optimizing compilers not get fooled
23 by Emacs's type punning. It also adds the macros XSETTYPED_PVECTYPE 13 by Emacs's type punning. It also adds the macros XSETTYPED_PVECTYPE
24 XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons. 14 XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
25 * lisp.h (XVECTOR_SIZE): New convenience macro. All previous uses of 15 * lisp.h (XSETTYPED_PVECTYPE): New macro, specifying the name of
26 XVECTOR (foo)->size replaced to use this macro, to avoid the hassle 16 the size member.
27 of writing XVECTOR (foo)->header.size.
28 (XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
29 (XSETTYPED_PVECTYPE): New macro, specifying the name of the size
30 member.
31 (XSETPVECTYPE): Rewrite in terms of new macro. 17 (XSETPVECTYPE): Rewrite in terms of new macro.
32 (XSETPVECTYPESIZE): New macro, specifying both type and size. 18 (XSETPVECTYPESIZE): New macro, specifying both type and size.
33 This is a bit clearer, and further avoids the possibility of 19 This is a bit clearer, and further avoids the possibility of
34 undesirable aliasing. 20 undesirable aliasing.
35 (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size. 21 (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
36 (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR 22 (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR.
37 and XVECTOR_HEADER_SIZE.
38 (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE, 23 (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
39 since Lisp_Subr is a special case (no "next" field). 24 since Lisp_Subr is a special case (no "next" field).
40 (ASIZE): Rewrite in terms of XVECTOR_SIZE. 25 (ASIZE): Now uses header.size rather than size. All
41 (struct vector_header): New type. 26 previous uses of XVECTOR (foo)->size replaced to use this macro,
27 to avoid the hassle of writing XVECTOR (foo)->header.size.
28 (struct vectorlike_header): New type.
42 (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the 29 (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
43 object, to help avoid aliasing. 30 object, to help avoid aliasing.
44 (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP. 31 (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
45 (SUBRP): Likewise, since Lisp_Subr is a special case. 32 (SUBRP): Likewise, since Lisp_Subr is a special case.
46
47 * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table): 33 * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
48 (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector): 34 (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
49 (struct Lisp_Hash_Table): Combine first two members into a single 35 (struct Lisp_Hash_Table): Combine first two members into a single
50 struct vector_header member. All uses of "size" and "next" members 36 struct vectorlike_header member. All uses of "size" and "next" members
51 changed to be "header.size" and "header.next". 37 changed to be "header.size" and "header.next".
52 * buffer.h (struct buffer): Likewise. 38 * buffer.h (struct buffer): Likewise.
53 * font.h (struct font_spec, struct font_entity, struct font): Likewise. 39 * font.h (struct font_spec, struct font_entity, struct font): Likewise.