aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorKaroly Lorentey2004-05-18 19:12:15 +0000
committerKaroly Lorentey2004-05-18 19:12:15 +0000
commitc23670f81e059ebe645c88575f4ddfa67f26bf6b (patch)
tree71667a6ceaa877ccf3953abedfa7b0fd5f0f5369 /src/lisp.h
parentd9858e4f1889a61b216ae1f99053846362067ccc (diff)
parenta7f7f2540f02834ad128d0c9357a4dbd8222dff4 (diff)
downloademacs-c23670f81e059ebe645c88575f4ddfa67f26bf6b.tar.gz
emacs-c23670f81e059ebe645c88575f4ddfa67f26bf6b.zip
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-299 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-300 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-301 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-302 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-303 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-304 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-305 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-306 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-307 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-308 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-309 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-310 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-311 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-312 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-313 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-314 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-315 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-316 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-317 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-318 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-319 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-320 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-321 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-322 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-323 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-324 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-163
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h52
1 files changed, 41 insertions, 11 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 023bedaea04..ca060cb4c2f 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -284,24 +284,51 @@ enum pvec_type
284#define BOOL_VECTOR_BITS_PER_CHAR 8 284#define BOOL_VECTOR_BITS_PER_CHAR 8
285 285
286/***** Select the tagging scheme. *****/ 286/***** Select the tagging scheme. *****/
287/* There are basically two options that control the tagging scheme:
288 - NO_UNION_TYPE says that Lisp_Object should be an integer instead
289 of a union.
290 - USE_LSB_TAG means that we can assume the least 3 bits of pointers are
291 always 0, and we can thus use them to hold tag bits, without
292 restricting our addressing space.
293
294 If USE_LSB_TAG is not set, then we use the top 3 bits for tagging, thus
295 restricting our possible address range. Currently USE_LSB_TAG is not
296 allowed together with a union. This is not due to any fundamental
297 technical (or political ;-) problem: nobody wrote the code to do it yet.
298
299 USE_LSB_TAG not only requires the least 3 bits of pointers returned by
300 malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
301 on the few static Lisp_Objects used: all the defsubr as well
302 as the two special buffers buffer_defaults and buffer_local_symbols. */
287 303
288/* First, try and define DECL_ALIGN(type,var) which declares a static 304/* First, try and define DECL_ALIGN(type,var) which declares a static
289 variable VAR of type TYPE with the added requirement that it be 305 variable VAR of type TYPE with the added requirement that it be
290 TYPEBITS-aligned. */ 306 TYPEBITS-aligned. */
291#if defined USE_LSB_TAG && !defined DECL_ALIGN 307#ifndef DECL_ALIGN
292/* What compiler directive should we use for non-gcc compilers? -stef */ 308/* What compiler directive should we use for non-gcc compilers? -stef */
293# if defined (__GNUC__) 309# if defined (__GNUC__)
294# define DECL_ALIGN(type, var) \ 310# define DECL_ALIGN(type, var) \
295 type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var 311 type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
296# else
297# error "USE_LSB_TAG used without defining DECL_ALIGN"
298# endif 312# endif
299#endif 313#endif
300 314
301#ifndef USE_LSB_TAG 315/* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8. */
316#if defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ || defined MAC_OSX
317/* We also need to be able to specify mult-of-8 alignment on static vars. */
318# if defined DECL_ALIGN
319/* We currently do not support USE_LSB_TAG with a union Lisp_Object. */
320# if defined NO_UNION_TYPE
321# define USE_LSB_TAG
322# endif
323# endif
324#endif
325
302/* Just remove the alignment annotation if we don't use it. */ 326/* Just remove the alignment annotation if we don't use it. */
303#undef DECL_ALIGN 327#ifndef DECL_ALIGN
304#define DECL_ALIGN(type, var) type var 328# ifdef USE_LSB_TAG
329# error "USE_LSB_TAG used without defining DECL_ALIGN"
330# endif
331# define DECL_ALIGN(type, var) type var
305#endif 332#endif
306 333
307 334
@@ -2857,6 +2884,10 @@ extern int indented_beyond_p P_ ((int, int, double));
2857extern void syms_of_indent P_ ((void)); 2884extern void syms_of_indent P_ ((void));
2858 2885
2859/* defined in frame.c */ 2886/* defined in frame.c */
2887#ifdef HAVE_WINDOW_SYSTEM
2888extern Lisp_Object Vx_resource_name;
2889extern Lisp_Object Vx_resource_class;
2890#endif /* HAVE_WINDOW_SYSTEM */
2860extern Lisp_Object Qvisible; 2891extern Lisp_Object Qvisible;
2861extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object)); 2892extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object));
2862extern void store_in_alist P_ ((Lisp_Object *, Lisp_Object, Lisp_Object)); 2893extern void store_in_alist P_ ((Lisp_Object *, Lisp_Object, Lisp_Object));
@@ -3079,11 +3110,12 @@ extern int getloadavg P_ ((double *, int));
3079#ifdef HAVE_X_WINDOWS 3110#ifdef HAVE_X_WINDOWS
3080/* Defined in xfns.c */ 3111/* Defined in xfns.c */
3081extern void syms_of_xfns P_ ((void)); 3112extern void syms_of_xfns P_ ((void));
3082extern Lisp_Object Vx_resource_name; 3113#endif /* HAVE_X_WINDOWS */
3083extern Lisp_Object Vx_resource_class; 3114#ifdef HAVE_WINDOW_SYSTEM
3115/* Defined in xfns.c, w32fns.c, or macfns.c */
3084EXFUN (Fxw_display_color_p, 1); 3116EXFUN (Fxw_display_color_p, 1);
3085EXFUN (Fx_file_dialog, 4); 3117EXFUN (Fx_file_dialog, 4);
3086#endif /* HAVE_X_WINDOWS */ 3118#endif /* HAVE_WINDOW_SYSTEM */
3087 3119
3088/* Defined in xsmfns.c */ 3120/* Defined in xsmfns.c */
3089extern void syms_of_xsmfns P_ ((void)); 3121extern void syms_of_xsmfns P_ ((void));
@@ -3109,9 +3141,7 @@ extern void xfree P_ ((POINTER_TYPE *));
3109 3141
3110extern char *xstrdup P_ ((const char *)); 3142extern char *xstrdup P_ ((const char *));
3111 3143
3112#ifndef USE_CRT_DLL
3113extern char *egetenv P_ ((char *)); 3144extern char *egetenv P_ ((char *));
3114#endif
3115 3145
3116/* Set up the name of the machine we're running on. */ 3146/* Set up the name of the machine we're running on. */
3117extern void init_system_name P_ ((void)); 3147extern void init_system_name P_ ((void));