/[emacs]/emacs/src/lisp.h
ViewVC logotype

Diff of /emacs/src/lisp.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.423.2.13 by miles, Tue May 11 02:38:15 2004 UTC revision 1.423.2.14 by miles, Tue Jul 6 09:14:36 2004 UTC
# Line 284  enum pvec_type Line 284  enum pvec_type
284  #define BOOL_VECTOR_BITS_PER_CHAR 8  #define BOOL_VECTOR_BITS_PER_CHAR 8
285    
286  /***** Select the tagging scheme.  *****/  /***** 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.  */
303    
304  /* First, try and define DECL_ALIGN(type,var) which declares a static  /* First, try and define DECL_ALIGN(type,var) which declares a static
305     variable VAR of type TYPE with the added requirement that it be     variable VAR of type TYPE with the added requirement that it be
306     TYPEBITS-aligned. */     TYPEBITS-aligned. */
307  #if defined USE_LSB_TAG && !defined DECL_ALIGN  #ifndef DECL_ALIGN
308    # ifndef MSDOS  /* MS-DOS doesn't currently support USE_LSB_TAG */
309  /* What compiler directive should we use for non-gcc compilers?  -stef  */  /* What compiler directive should we use for non-gcc compilers?  -stef  */
310  # if defined (__GNUC__)  #  if defined (__GNUC__)
311  #  define DECL_ALIGN(type, var) \  #   define DECL_ALIGN(type, var) \
312      type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var       type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
313  # else  #  endif
314  #  error "USE_LSB_TAG used without defining DECL_ALIGN"  # endif
315    #endif
316    
317    /* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8.  */
318    #if defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ || defined MAC_OSX
319    /* We also need to be able to specify mult-of-8 alignment on static vars.  */
320    # if defined DECL_ALIGN
321    /* We currently do not support USE_LSB_TAG with a union Lisp_Object.  */
322    #  if defined NO_UNION_TYPE
323    #   define USE_LSB_TAG
324    #  endif
325  # endif  # endif
326  #endif  #endif
327    
 #ifndef USE_LSB_TAG  
328  /* Just remove the alignment annotation if we don't use it.  */  /* Just remove the alignment annotation if we don't use it.  */
329  #undef DECL_ALIGN  #ifndef DECL_ALIGN
330  #define DECL_ALIGN(type, var) type var  # ifdef USE_LSB_TAG
331    #  error "USE_LSB_TAG used without defining DECL_ALIGN"
332    # endif
333    # define DECL_ALIGN(type, var) type var
334  #endif  #endif
335    
336    
# Line 2862  extern int indented_beyond_p P_ ((int, i Line 2891  extern int indented_beyond_p P_ ((int, i
2891  extern void syms_of_indent P_ ((void));  extern void syms_of_indent P_ ((void));
2892    
2893  /* defined in frame.c */  /* defined in frame.c */
2894    #ifdef HAVE_WINDOW_SYSTEM
2895    extern Lisp_Object Vx_resource_name;
2896    extern Lisp_Object Vx_resource_class;
2897    #endif /* HAVE_WINDOW_SYSTEM */
2898  extern Lisp_Object Qvisible;  extern Lisp_Object Qvisible;
2899  extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object));  extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object));
2900  extern void store_in_alist P_ ((Lisp_Object *, Lisp_Object, Lisp_Object));  extern void store_in_alist P_ ((Lisp_Object *, Lisp_Object, Lisp_Object));
# Line 3084  extern int getloadavg P_ ((double *, int Line 3117  extern int getloadavg P_ ((double *, int
3117  #ifdef HAVE_X_WINDOWS  #ifdef HAVE_X_WINDOWS
3118  /* Defined in xfns.c */  /* Defined in xfns.c */
3119  extern void syms_of_xfns P_ ((void));  extern void syms_of_xfns P_ ((void));
3120  extern Lisp_Object Vx_resource_name;  #endif /* HAVE_X_WINDOWS */
3121  extern Lisp_Object Vx_resource_class;  #ifdef HAVE_WINDOW_SYSTEM
3122    /* Defined in xfns.c, w32fns.c, or macfns.c */
3123  EXFUN (Fxw_display_color_p, 1);  EXFUN (Fxw_display_color_p, 1);
3124  EXFUN (Fx_file_dialog, 4);  EXFUN (Fx_file_dialog, 4);
3125  #endif /* HAVE_X_WINDOWS */  #endif /* HAVE_WINDOW_SYSTEM */
3126    
3127  /* Defined in xsmfns.c */  /* Defined in xsmfns.c */
3128  extern void syms_of_xsmfns P_ ((void));  extern void syms_of_xsmfns P_ ((void));
# Line 3114  extern void xfree P_ ((POINTER_TYPE *)); Line 3148  extern void xfree P_ ((POINTER_TYPE *));
3148    
3149  extern char *xstrdup P_ ((const char *));  extern char *xstrdup P_ ((const char *));
3150    
 #ifndef USE_CRT_DLL  
3151  extern char *egetenv P_ ((char *));  extern char *egetenv P_ ((char *));
 #endif  
3152    
3153  /* Set up the name of the machine we're running on.  */  /* Set up the name of the machine we're running on.  */
3154  extern void init_system_name P_ ((void));  extern void init_system_name P_ ((void));

Legend:
Removed from v.1.423.2.13  
changed lines
  Added in v.1.423.2.14

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26