aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/NEWS2
-rw-r--r--lib-src/ChangeLog7
-rw-r--r--lib-src/update-game-score.c5
-rw-r--r--lisp/ChangeLog10
-rw-r--r--lisp/bindings.el1
-rw-r--r--lisp/frame.el22
-rw-r--r--lisp/scroll-all.el1
-rw-r--r--lisp/window.el2
-rw-r--r--src/ChangeLog26
-rw-r--r--src/alloc.c79
-rw-r--r--src/buffer.c11
-rw-r--r--src/lisp.h37
-rw-r--r--src/m/ia64.h10
13 files changed, 124 insertions, 89 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 186dca19495..56a0c9bf95d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -47,6 +47,8 @@ prompts for a column number.
47** `C-M-f' and `C-M-b' will now move to the path name separator 47** `C-M-f' and `C-M-b' will now move to the path name separator
48character when doing minibuffer filename prompts. 48character when doing minibuffer filename prompts.
49 49
50** `goto-char' is now bound to `M-g c'.
51
50 52
51* Changes in Specialized Modes and Packages in Emacs 24.2 53* Changes in Specialized Modes and Packages in Emacs 24.2
52 54
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index ac3e0a612e2..ea5f5a26627 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,10 @@
12012-04-16 Paul Eggert <eggert@cs.ucla.edu>
2
3 Assume less-ancient POSIX support.
4 * update-game-score.c: Include <getopt.h> rather than rolling our
5 own decls for optarg, optind, opterr. See
6 <http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html>.
7
12012-04-14 Juanma Barranquero <lekktu@gmail.com> 82012-04-14 Juanma Barranquero <lekktu@gmail.com>
2 9
3 * emacsclient.c (decode_options) [WINDOWSNT]: 10 * emacsclient.c (decode_options) [WINDOWSNT]:
diff --git a/lib-src/update-game-score.c b/lib-src/update-game-score.c
index a32bd6d8d78..e0c940510be 100644
--- a/lib-src/update-game-score.c
+++ b/lib-src/update-game-score.c
@@ -46,10 +46,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
46#include <fcntl.h> 46#include <fcntl.h>
47#endif 47#endif
48#include <sys/stat.h> 48#include <sys/stat.h>
49 49#include <getopt.h>
50/* Needed for SunOS4, for instance. */
51extern char *optarg;
52extern int optind, opterr;
53 50
54static int usage (int err) NO_RETURN; 51static int usage (int err) NO_RETURN;
55 52
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b2a3f135109..a21d5841346 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,13 @@
12012-04-15 Chong Yidong <cyd@gnu.org>
2
3 * frame.el (scrolling): Remove nearly unused customization group.
4
5 * scroll-all.el (scroll-all-mode): Move to windows group.
6
72012-04-15 Chong Yidong <cyd@gnu.org>
8
9 * bindings.el (goto-map): Bind goto-char to M-g c (Bug#11240).
10
12012-04-15 Stefan Monnier <monnier@iro.umontreal.ca> 112012-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
2 12
3 Avoid the use of ((lambda ...) ...) in lexical-binding code. 13 Avoid the use of ((lambda ...) ...) in lexical-binding code.
diff --git a/lisp/bindings.el b/lisp/bindings.el
index a87f321c936..8cfeecf5b40 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -868,6 +868,7 @@ if `inhibit-field-text-motion' is non-nil."
868 "Keymap for navigation commands.") 868 "Keymap for navigation commands.")
869(define-key esc-map "g" goto-map) 869(define-key esc-map "g" goto-map)
870 870
871(define-key goto-map "c" 'goto-char)
871(define-key goto-map "g" 'goto-line) 872(define-key goto-map "g" 'goto-line)
872(define-key goto-map "\M-g" 'goto-line) 873(define-key goto-map "\M-g" 'goto-line)
873(define-key goto-map "n" 'next-error) 874(define-key goto-map "n" 'next-error)
diff --git a/lisp/frame.el b/lisp/frame.el
index 1cd6c0cf181..79e1243c7af 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -1557,21 +1557,6 @@ left untouched. FRAME nil or omitted means use the selected frame."
1557 'delete-frame-functions "22.1") 1557 'delete-frame-functions "22.1")
1558 1558
1559 1559
1560;; Highlighting trailing whitespace.
1561
1562(make-variable-buffer-local 'show-trailing-whitespace)
1563
1564
1565;; Scrolling
1566
1567(defgroup scrolling nil
1568 "Scrolling windows."
1569 :version "21.1"
1570 :group 'frames)
1571
1572(defvaralias 'automatic-hscrolling 'auto-hscroll-mode)
1573
1574
1575;; Blinking cursor 1560;; Blinking cursor
1576 1561
1577(defgroup cursor nil 1562(defgroup cursor nil
@@ -1663,6 +1648,13 @@ terminals, cursor blinking is controlled by the terminal."
1663(define-key ctl-x-5-map "0" 'delete-frame) 1648(define-key ctl-x-5-map "0" 'delete-frame)
1664(define-key ctl-x-5-map "o" 'other-frame) 1649(define-key ctl-x-5-map "o" 'other-frame)
1665 1650
1651
1652;; Misc.
1653
1654(defvaralias 'automatic-hscrolling 'auto-hscroll-mode)
1655
1656(make-variable-buffer-local 'show-trailing-whitespace)
1657
1666(provide 'frame) 1658(provide 'frame)
1667 1659
1668;;; frame.el ends here 1660;;; frame.el ends here
diff --git a/lisp/scroll-all.el b/lisp/scroll-all.el
index 9ff0a61db2f..fed886c2b55 100644
--- a/lisp/scroll-all.el
+++ b/lisp/scroll-all.el
@@ -111,7 +111,6 @@ one window apply to all visible windows in the same frame."
111 nil " *SL*" nil 111 nil " *SL*" nil
112 :global t 112 :global t
113 :group 'windows 113 :group 'windows
114 :group 'scrolling
115 (if scroll-all-mode 114 (if scroll-all-mode
116 (add-hook 'post-command-hook 'scroll-all-check-to-scroll) 115 (add-hook 'post-command-hook 'scroll-all-check-to-scroll)
117 (remove-hook 'post-command-hook 'scroll-all-check-to-scroll))) 116 (remove-hook 'post-command-hook 'scroll-all-check-to-scroll)))
diff --git a/lisp/window.el b/lisp/window.el
index ca2cc9e7950..934b6067d08 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5443,7 +5443,7 @@ A value of t means point moves to the beginning or the end of the buffer
5443\(depending on scrolling direction) when no more scrolling possible. 5443\(depending on scrolling direction) when no more scrolling possible.
5444When point is already on that position, then signal an error." 5444When point is already on that position, then signal an error."
5445 :type 'boolean 5445 :type 'boolean
5446 :group 'scrolling 5446 :group 'windows
5447 :version "24.1") 5447 :version "24.1")
5448 5448
5449(defun scroll-up-command (&optional arg) 5449(defun scroll-up-command (&optional arg)
diff --git a/src/ChangeLog b/src/ChangeLog
index c58b87c7705..0fa21336900 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,29 @@
12012-04-16 Paul Eggert <eggert@cs.ucla.edu>
2
3 Improve ralloc.c interface checking.
4 See http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html
5 * buffer.c (ralloc_reset_variable, r_alloc, r_re_alloc)
6 (r_alloc_free) [REL_ALLOC]: Move decls from here ...
7 * lisp.h (r_alloc, r_alloc_free, r_re_alloc, r_alloc_reset_variable)
8 [REL_ALLOC]: ... to here, to check interface.
9 * m/ia64.h (r_alloc, r_alloc_free) [REL_ALLOC && !_MALLOC_INTERNAL]:
10 Remove decls. This fixes an "It stinks!".
11
12 * alloc.c (which_symbols): Fix alignment issue / type clash.
13
142012-04-15 Andreas Schwab <schwab@linux-m68k.org>
15
16 * lisp.h (struct Lisp_Symbol): Remove explicit padding.
17 (struct Lisp_Misc_Any): Likewise.
18 (struct Lisp_Free): Likewise.
19 * alloc.c (union aligned_Lisp_Symbol): Define.
20 (SYMBOL_BLOCK_SIZE, struct symbol_block): Use union
21 aligned_Lisp_Symbol instead of struct Lisp_Symbol.
22 (union aligned_Lisp_Misc): Define.
23 (MARKER_BLOCK_SIZE, struct marker_block): Use union
24 aligned_Lisp_Misc instead of union Lisp_Misc.
25 (Fmake_symbol, allocate_misc, gc_sweep): Adjust
26
12012-04-14 Paul Eggert <eggert@cs.ucla.edu> 272012-04-14 Paul Eggert <eggert@cs.ucla.edu>
2 28
3 Make GC_MAKE_GCPROS_NOOPS the default (Bug#9926). 29 Make GC_MAKE_GCPROS_NOOPS the default (Bug#9926).
diff --git a/src/alloc.c b/src/alloc.c
index 314438ba9f1..0e68817629c 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3136,17 +3136,29 @@ usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INT
3136 Symbol Allocation 3136 Symbol Allocation
3137 ***********************************************************************/ 3137 ***********************************************************************/
3138 3138
3139/* Like struct Lisp_Symbol, but padded so that the size is a multiple
3140 of the required alignment if LSB tags are used. */
3141
3142union aligned_Lisp_Symbol
3143{
3144 struct Lisp_Symbol s;
3145#ifdef USE_LSB_TAG
3146 unsigned char c[(sizeof (struct Lisp_Symbol) + (1 << GCTYPEBITS) - 1)
3147 & -(1 << GCTYPEBITS)];
3148#endif
3149};
3150
3139/* Each symbol_block is just under 1020 bytes long, since malloc 3151/* Each symbol_block is just under 1020 bytes long, since malloc
3140 really allocates in units of powers of two and uses 4 bytes for its 3152 really allocates in units of powers of two and uses 4 bytes for its
3141 own overhead. */ 3153 own overhead. */
3142 3154
3143#define SYMBOL_BLOCK_SIZE \ 3155#define SYMBOL_BLOCK_SIZE \
3144 ((1020 - sizeof (struct symbol_block *)) / sizeof (struct Lisp_Symbol)) 3156 ((1020 - sizeof (struct symbol_block *)) / sizeof (union aligned_Lisp_Symbol))
3145 3157
3146struct symbol_block 3158struct symbol_block
3147{ 3159{
3148 /* Place `symbols' first, to preserve alignment. */ 3160 /* Place `symbols' first, to preserve alignment. */
3149 struct Lisp_Symbol symbols[SYMBOL_BLOCK_SIZE]; 3161 union aligned_Lisp_Symbol symbols[SYMBOL_BLOCK_SIZE];
3150 struct symbol_block *next; 3162 struct symbol_block *next;
3151}; 3163};
3152 3164
@@ -3202,7 +3214,7 @@ Its value and function definition are void, and its property list is nil. */)
3202 symbol_block = new; 3214 symbol_block = new;
3203 symbol_block_index = 0; 3215 symbol_block_index = 0;
3204 } 3216 }
3205 XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index]); 3217 XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index].s);
3206 symbol_block_index++; 3218 symbol_block_index++;
3207 } 3219 }
3208 3220
@@ -3230,16 +3242,28 @@ Its value and function definition are void, and its property list is nil. */)
3230 Marker (Misc) Allocation 3242 Marker (Misc) Allocation
3231 ***********************************************************************/ 3243 ***********************************************************************/
3232 3244
3245/* Like union Lisp_Misc, but padded so that its size is a multiple of
3246 the required alignment when LSB tags are used. */
3247
3248union aligned_Lisp_Misc
3249{
3250 union Lisp_Misc m;
3251#ifdef USE_LSB_TAG
3252 unsigned char c[(sizeof (union Lisp_Misc) + (1 << GCTYPEBITS) - 1)
3253 & -(1 << GCTYPEBITS)];
3254#endif
3255};
3256
3233/* Allocation of markers and other objects that share that structure. 3257/* Allocation of markers and other objects that share that structure.
3234 Works like allocation of conses. */ 3258 Works like allocation of conses. */
3235 3259
3236#define MARKER_BLOCK_SIZE \ 3260#define MARKER_BLOCK_SIZE \
3237 ((1020 - sizeof (struct marker_block *)) / sizeof (union Lisp_Misc)) 3261 ((1020 - sizeof (struct marker_block *)) / sizeof (union aligned_Lisp_Misc))
3238 3262
3239struct marker_block 3263struct marker_block
3240{ 3264{
3241 /* Place `markers' first, to preserve alignment. */ 3265 /* Place `markers' first, to preserve alignment. */
3242 union Lisp_Misc markers[MARKER_BLOCK_SIZE]; 3266 union aligned_Lisp_Misc markers[MARKER_BLOCK_SIZE];
3243 struct marker_block *next; 3267 struct marker_block *next;
3244}; 3268};
3245 3269
@@ -3284,7 +3308,7 @@ allocate_misc (void)
3284 marker_block_index = 0; 3308 marker_block_index = 0;
3285 total_free_markers += MARKER_BLOCK_SIZE; 3309 total_free_markers += MARKER_BLOCK_SIZE;
3286 } 3310 }
3287 XSETMISC (val, &marker_block->markers[marker_block_index]); 3311 XSETMISC (val, &marker_block->markers[marker_block_index].m);
3288 marker_block_index++; 3312 marker_block_index++;
3289 } 3313 }
3290 3314
@@ -6070,22 +6094,22 @@ gc_sweep (void)
6070 for (sblk = symbol_block; sblk; sblk = *sprev) 6094 for (sblk = symbol_block; sblk; sblk = *sprev)
6071 { 6095 {
6072 int this_free = 0; 6096 int this_free = 0;
6073 struct Lisp_Symbol *sym = sblk->symbols; 6097 union aligned_Lisp_Symbol *sym = sblk->symbols;
6074 struct Lisp_Symbol *end = sym + lim; 6098 union aligned_Lisp_Symbol *end = sym + lim;
6075 6099
6076 for (; sym < end; ++sym) 6100 for (; sym < end; ++sym)
6077 { 6101 {
6078 /* Check if the symbol was created during loadup. In such a case 6102 /* Check if the symbol was created during loadup. In such a case
6079 it might be pointed to by pure bytecode which we don't trace, 6103 it might be pointed to by pure bytecode which we don't trace,
6080 so we conservatively assume that it is live. */ 6104 so we conservatively assume that it is live. */
6081 int pure_p = PURE_POINTER_P (XSTRING (sym->xname)); 6105 int pure_p = PURE_POINTER_P (XSTRING (sym->s.xname));
6082 6106
6083 if (!sym->gcmarkbit && !pure_p) 6107 if (!sym->s.gcmarkbit && !pure_p)
6084 { 6108 {
6085 if (sym->redirect == SYMBOL_LOCALIZED) 6109 if (sym->s.redirect == SYMBOL_LOCALIZED)
6086 xfree (SYMBOL_BLV (sym)); 6110 xfree (SYMBOL_BLV (&sym->s));
6087 sym->next = symbol_free_list; 6111 sym->s.next = symbol_free_list;
6088 symbol_free_list = sym; 6112 symbol_free_list = &sym->s;
6089#if GC_MARK_STACK 6113#if GC_MARK_STACK
6090 symbol_free_list->function = Vdead; 6114 symbol_free_list->function = Vdead;
6091#endif 6115#endif
@@ -6095,8 +6119,8 @@ gc_sweep (void)
6095 { 6119 {
6096 ++num_used; 6120 ++num_used;
6097 if (!pure_p) 6121 if (!pure_p)
6098 UNMARK_STRING (XSTRING (sym->xname)); 6122 UNMARK_STRING (XSTRING (sym->s.xname));
6099 sym->gcmarkbit = 0; 6123 sym->s.gcmarkbit = 0;
6100 } 6124 }
6101 } 6125 }
6102 6126
@@ -6108,7 +6132,7 @@ gc_sweep (void)
6108 { 6132 {
6109 *sprev = sblk->next; 6133 *sprev = sblk->next;
6110 /* Unhook from the free list. */ 6134 /* Unhook from the free list. */
6111 symbol_free_list = sblk->symbols[0].next; 6135 symbol_free_list = sblk->symbols[0].s.next;
6112 lisp_free (sblk); 6136 lisp_free (sblk);
6113 } 6137 }
6114 else 6138 else
@@ -6138,22 +6162,22 @@ gc_sweep (void)
6138 6162
6139 for (i = 0; i < lim; i++) 6163 for (i = 0; i < lim; i++)
6140 { 6164 {
6141 if (!mblk->markers[i].u_any.gcmarkbit) 6165 if (!mblk->markers[i].m.u_any.gcmarkbit)
6142 { 6166 {
6143 if (mblk->markers[i].u_any.type == Lisp_Misc_Marker) 6167 if (mblk->markers[i].m.u_any.type == Lisp_Misc_Marker)
6144 unchain_marker (&mblk->markers[i].u_marker); 6168 unchain_marker (&mblk->markers[i].m.u_marker);
6145 /* Set the type of the freed object to Lisp_Misc_Free. 6169 /* Set the type of the freed object to Lisp_Misc_Free.
6146 We could leave the type alone, since nobody checks it, 6170 We could leave the type alone, since nobody checks it,
6147 but this might catch bugs faster. */ 6171 but this might catch bugs faster. */
6148 mblk->markers[i].u_marker.type = Lisp_Misc_Free; 6172 mblk->markers[i].m.u_marker.type = Lisp_Misc_Free;
6149 mblk->markers[i].u_free.chain = marker_free_list; 6173 mblk->markers[i].m.u_free.chain = marker_free_list;
6150 marker_free_list = &mblk->markers[i]; 6174 marker_free_list = &mblk->markers[i].m;
6151 this_free++; 6175 this_free++;
6152 } 6176 }
6153 else 6177 else
6154 { 6178 {
6155 num_used++; 6179 num_used++;
6156 mblk->markers[i].u_any.gcmarkbit = 0; 6180 mblk->markers[i].m.u_any.gcmarkbit = 0;
6157 } 6181 }
6158 } 6182 }
6159 lim = MARKER_BLOCK_SIZE; 6183 lim = MARKER_BLOCK_SIZE;
@@ -6164,7 +6188,7 @@ gc_sweep (void)
6164 { 6188 {
6165 *mprev = mblk->next; 6189 *mprev = mblk->next;
6166 /* Unhook from the free list. */ 6190 /* Unhook from the free list. */
6167 marker_free_list = mblk->markers[0].u_free.chain; 6191 marker_free_list = mblk->markers[0].m.u_free.chain;
6168 lisp_free (mblk); 6192 lisp_free (mblk);
6169 } 6193 }
6170 else 6194 else
@@ -6296,11 +6320,12 @@ which_symbols (Lisp_Object obj, EMACS_INT find_max)
6296 { 6320 {
6297 for (sblk = symbol_block; sblk; sblk = sblk->next) 6321 for (sblk = symbol_block; sblk; sblk = sblk->next)
6298 { 6322 {
6299 struct Lisp_Symbol *sym = sblk->symbols; 6323 union aligned_Lisp_Symbol *aligned_sym = sblk->symbols;
6300 int bn; 6324 int bn;
6301 6325
6302 for (bn = 0; bn < SYMBOL_BLOCK_SIZE; bn++, sym++) 6326 for (bn = 0; bn < SYMBOL_BLOCK_SIZE; bn++, aligned_sym++)
6303 { 6327 {
6328 struct Lisp_Symbol *sym = &aligned_sym->s;
6304 Lisp_Object val; 6329 Lisp_Object val;
6305 Lisp_Object tem; 6330 Lisp_Object tem;
6306 6331
diff --git a/src/buffer.c b/src/buffer.c
index ca8d1ec5db3..9bac3ec742b 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2006,10 +2006,6 @@ advance_to_char_boundary (EMACS_INT byte_pos)
2006 return byte_pos; 2006 return byte_pos;
2007} 2007}
2008 2008
2009#ifdef REL_ALLOC
2010extern void r_alloc_reset_variable (POINTER_TYPE *, POINTER_TYPE *);
2011#endif /* REL_ALLOC */
2012
2013DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text, 2009DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text,
2014 1, 1, 0, 2010 1, 1, 0,
2015 doc: /* Swap the text between current buffer and BUFFER. */) 2011 doc: /* Swap the text between current buffer and BUFFER. */)
@@ -4771,13 +4767,6 @@ mmap_realloc (POINTER_TYPE **var, size_t nbytes)
4771 Buffer-text Allocation 4767 Buffer-text Allocation
4772 ***********************************************************************/ 4768 ***********************************************************************/
4773 4769
4774#ifdef REL_ALLOC
4775extern POINTER_TYPE *r_alloc (POINTER_TYPE **, size_t);
4776extern POINTER_TYPE *r_re_alloc (POINTER_TYPE **, size_t);
4777extern void r_alloc_free (POINTER_TYPE **ptr);
4778#endif /* REL_ALLOC */
4779
4780
4781/* Allocate NBYTES bytes for buffer B's text buffer. */ 4770/* Allocate NBYTES bytes for buffer B's text buffer. */
4782 4771
4783static void 4772static void
diff --git a/src/lisp.h b/src/lisp.h
index 0d66f57fdb1..37fa81b63f6 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1138,8 +1138,6 @@ struct Lisp_Symbol
1138 special (with `defvar' etc), and shouldn't be lexically bound. */ 1138 special (with `defvar' etc), and shouldn't be lexically bound. */
1139 unsigned declared_special : 1; 1139 unsigned declared_special : 1;
1140 1140
1141 unsigned spacer : 23;
1142
1143 /* The symbol's name, as a Lisp string. 1141 /* The symbol's name, as a Lisp string.
1144 The name "xname" is used to intentionally break code referring to 1142 The name "xname" is used to intentionally break code referring to
1145 the old field "name" of type pointer to struct Lisp_String. */ 1143 the old field "name" of type pointer to struct Lisp_String. */
@@ -1341,8 +1339,6 @@ struct Lisp_Misc_Any /* Supertype of all Misc types. */
1341 ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_??? */ 1339 ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_??? */
1342 unsigned gcmarkbit : 1; 1340 unsigned gcmarkbit : 1;
1343 int spacer : 15; 1341 int spacer : 15;
1344 /* Make it as long as "Lisp_Free without padding". */
1345 void *fill;
1346}; 1342};
1347 1343
1348struct Lisp_Marker 1344struct Lisp_Marker
@@ -1534,13 +1530,6 @@ struct Lisp_Free
1534 unsigned gcmarkbit : 1; 1530 unsigned gcmarkbit : 1;
1535 int spacer : 15; 1531 int spacer : 15;
1536 union Lisp_Misc *chain; 1532 union Lisp_Misc *chain;
1537#ifdef USE_LSB_TAG
1538 /* Try to make sure that sizeof(Lisp_Misc) preserves TYPEBITS-alignment.
1539 This assumes that Lisp_Marker is the largest of the alternatives and
1540 that Lisp_Misc_Any has the same size as "Lisp_Free w/o padding". */
1541 char padding[((((sizeof (struct Lisp_Marker) - 1) >> GCTYPEBITS) + 1)
1542 << GCTYPEBITS) - sizeof (struct Lisp_Misc_Any)];
1543#endif
1544 }; 1533 };
1545 1534
1546/* To get the type field of a union Lisp_Misc, use XMISCTYPE. 1535/* To get the type field of a union Lisp_Misc, use XMISCTYPE.
@@ -1549,19 +1538,19 @@ struct Lisp_Free
1549union Lisp_Misc 1538union Lisp_Misc
1550 { 1539 {
1551 struct Lisp_Misc_Any u_any; /* Supertype of all Misc types. */ 1540 struct Lisp_Misc_Any u_any; /* Supertype of all Misc types. */
1552 struct Lisp_Free u_free; /* Includes padding to force alignment. */ 1541 struct Lisp_Free u_free;
1553 struct Lisp_Marker u_marker; /* 5 */ 1542 struct Lisp_Marker u_marker;
1554 struct Lisp_Overlay u_overlay; /* 5 */ 1543 struct Lisp_Overlay u_overlay;
1555 struct Lisp_Save_Value u_save_value; /* 3 */ 1544 struct Lisp_Save_Value u_save_value;
1556 }; 1545 };
1557 1546
1558union Lisp_Fwd 1547union Lisp_Fwd
1559 { 1548 {
1560 struct Lisp_Intfwd u_intfwd; /* 2 */ 1549 struct Lisp_Intfwd u_intfwd;
1561 struct Lisp_Boolfwd u_boolfwd; /* 2 */ 1550 struct Lisp_Boolfwd u_boolfwd;
1562 struct Lisp_Objfwd u_objfwd; /* 2 */ 1551 struct Lisp_Objfwd u_objfwd;
1563 struct Lisp_Buffer_Objfwd u_buffer_objfwd; /* 2 */ 1552 struct Lisp_Buffer_Objfwd u_buffer_objfwd;
1564 struct Lisp_Kboard_Objfwd u_kboard_objfwd; /* 2 */ 1553 struct Lisp_Kboard_Objfwd u_kboard_objfwd;
1565 }; 1554 };
1566 1555
1567/* Lisp floating point type */ 1556/* Lisp floating point type */
@@ -2847,6 +2836,14 @@ extern void syms_of_alloc (void);
2847extern struct buffer * allocate_buffer (void); 2836extern struct buffer * allocate_buffer (void);
2848extern int valid_lisp_object_p (Lisp_Object); 2837extern int valid_lisp_object_p (Lisp_Object);
2849 2838
2839#ifdef REL_ALLOC
2840/* Defined in ralloc.c */
2841extern void *r_alloc (void **, size_t);
2842extern void r_alloc_free (void **);
2843extern void *r_re_alloc (void **, size_t);
2844extern void r_alloc_reset_variable (void **, void **);
2845#endif
2846
2850/* Defined in chartab.c */ 2847/* Defined in chartab.c */
2851EXFUN (Fmake_char_table, 2); 2848EXFUN (Fmake_char_table, 2);
2852EXFUN (Fset_char_table_parent, 2); 2849EXFUN (Fset_char_table_parent, 2);
diff --git a/src/m/ia64.h b/src/m/ia64.h
index 2ddc2fdfb17..47df94cedd0 100644
--- a/src/m/ia64.h
+++ b/src/m/ia64.h
@@ -30,13 +30,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
30#define EMACS_INT long 30#define EMACS_INT long
31#define pI "l" 31#define pI "l"
32#define EMACS_UINT unsigned long 32#define EMACS_UINT unsigned long
33
34#ifdef REL_ALLOC
35#ifndef _MALLOC_INTERNAL
36/* "char *" because ralloc.c defines it that way. gmalloc.c thinks it
37 is allowed to prototype these as "void *" so we don't prototype in
38 that case. You're right: it stinks! */
39extern char *r_alloc (), *r_re_alloc ();
40extern void r_alloc_free ();
41#endif /* not _MALLOC_INTERNAL */
42#endif /* REL_ALLOC */