aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorPaul Eggert2020-05-25 23:24:47 -0700
committerPaul Eggert2020-05-25 23:28:04 -0700
commitc4faf78a985aa8a147b4a5f7530ea43d0ad55835 (patch)
treed5137851674fedd2b36068abd84f404645b870b9 /src/alloc.c
parent92278640babbfe1383ebba3baf3bc10278a01050 (diff)
downloademacs-c4faf78a985aa8a147b4a5f7530ea43d0ad55835.tar.gz
emacs-c4faf78a985aa8a147b4a5f7530ea43d0ad55835.zip
Move union emacs_align_type to alloc.c
* src/alloc.c (union emacs_align_type): Move to here ... * src/lisp.h: ... from here, and uncomment out some of the types that alloc.c can see but lisp.h cannot.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 77d5d2839a2..f8609398a3f 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -104,6 +104,46 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
104#include "w32heap.h" /* for sbrk */ 104#include "w32heap.h" /* for sbrk */
105#endif 105#endif
106 106
107/* A type with alignment at least as large as any object that Emacs
108 allocates. This is not max_align_t because some platforms (e.g.,
109 mingw) have buggy malloc implementations that do not align for
110 max_align_t. This union contains types of all GCALIGNED_STRUCT
111 components visible here. */
112union emacs_align_type
113{
114 struct frame frame;
115 struct Lisp_Bignum Lisp_Bignum;
116 struct Lisp_Bool_Vector Lisp_Bool_Vector;
117 struct Lisp_Char_Table Lisp_Char_Table;
118 struct Lisp_CondVar Lisp_CondVar;
119 struct Lisp_Finalizer Lisp_Finalizer;
120 struct Lisp_Float Lisp_Float;
121 struct Lisp_Hash_Table Lisp_Hash_Table;
122 struct Lisp_Marker Lisp_Marker;
123 struct Lisp_Misc_Ptr Lisp_Misc_Ptr;
124 struct Lisp_Mutex Lisp_Mutex;
125 struct Lisp_Overlay Lisp_Overlay;
126 struct Lisp_Sub_Char_Table Lisp_Sub_Char_Table;
127 struct Lisp_Subr Lisp_Subr;
128 struct Lisp_User_Ptr Lisp_User_Ptr;
129 struct Lisp_Vector Lisp_Vector;
130 struct terminal terminal;
131 struct thread_state thread_state;
132 struct window window;
133
134 /* Omit the following since they would require including process.h
135 etc. In practice their alignments never exceed that of the
136 structs already listed. */
137#if 0
138 struct Lisp_Module_Function Lisp_Module_Function;
139 struct Lisp_Process Lisp_Process;
140 struct save_window_data save_window_data;
141 struct scroll_bar scroll_bar;
142 struct xwidget_view xwidget_view;
143 struct xwidget xwidget;
144#endif
145};
146
107/* MALLOC_SIZE_NEAR (N) is a good number to pass to malloc when 147/* MALLOC_SIZE_NEAR (N) is a good number to pass to malloc when
108 allocating a block of memory with size close to N bytes. 148 allocating a block of memory with size close to N bytes.
109 For best results N should be a power of 2. 149 For best results N should be a power of 2.