diff options
| author | Karoly Lorentey | 2004-05-18 19:12:15 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-05-18 19:12:15 +0000 |
| commit | c23670f81e059ebe645c88575f4ddfa67f26bf6b (patch) | |
| tree | 71667a6ceaa877ccf3953abedfa7b0fd5f0f5369 /src/lisp.h | |
| parent | d9858e4f1889a61b216ae1f99053846362067ccc (diff) | |
| parent | a7f7f2540f02834ad128d0c9357a4dbd8222dff4 (diff) | |
| download | emacs-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.h | 52 |
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)); | |||
| 2857 | extern void syms_of_indent P_ ((void)); | 2884 | extern void syms_of_indent P_ ((void)); |
| 2858 | 2885 | ||
| 2859 | /* defined in frame.c */ | 2886 | /* defined in frame.c */ |
| 2887 | #ifdef HAVE_WINDOW_SYSTEM | ||
| 2888 | extern Lisp_Object Vx_resource_name; | ||
| 2889 | extern Lisp_Object Vx_resource_class; | ||
| 2890 | #endif /* HAVE_WINDOW_SYSTEM */ | ||
| 2860 | extern Lisp_Object Qvisible; | 2891 | extern Lisp_Object Qvisible; |
| 2861 | extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object)); | 2892 | extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object)); |
| 2862 | extern void store_in_alist P_ ((Lisp_Object *, Lisp_Object, Lisp_Object)); | 2893 | extern 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 */ |
| 3081 | extern void syms_of_xfns P_ ((void)); | 3112 | extern void syms_of_xfns P_ ((void)); |
| 3082 | extern Lisp_Object Vx_resource_name; | 3113 | #endif /* HAVE_X_WINDOWS */ |
| 3083 | extern Lisp_Object Vx_resource_class; | 3114 | #ifdef HAVE_WINDOW_SYSTEM |
| 3115 | /* Defined in xfns.c, w32fns.c, or macfns.c */ | ||
| 3084 | EXFUN (Fxw_display_color_p, 1); | 3116 | EXFUN (Fxw_display_color_p, 1); |
| 3085 | EXFUN (Fx_file_dialog, 4); | 3117 | EXFUN (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 */ |
| 3089 | extern void syms_of_xsmfns P_ ((void)); | 3121 | extern void syms_of_xsmfns P_ ((void)); |
| @@ -3109,9 +3141,7 @@ extern void xfree P_ ((POINTER_TYPE *)); | |||
| 3109 | 3141 | ||
| 3110 | extern char *xstrdup P_ ((const char *)); | 3142 | extern char *xstrdup P_ ((const char *)); |
| 3111 | 3143 | ||
| 3112 | #ifndef USE_CRT_DLL | ||
| 3113 | extern char *egetenv P_ ((char *)); | 3144 | extern 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. */ |
| 3117 | extern void init_system_name P_ ((void)); | 3147 | extern void init_system_name P_ ((void)); |