comparison src/lisp.h @ 801:2b676dc88c66

[xemacs-hg @ 2002-04-01 03:58:02 by ben] bug fixes (e.g. ballooning on X windows) Makefile.in.in: Try to make the Makefile notice if its source Makefile.in.in is changed, and regenerate and run itself. Use a bigger default SHEAP_ADJUSTMENT on Cygwin; otherwise you can't compile under Mule if a Lisp file has changed. (can't run temacs) TODO.ben-mule-21-5: update. mule/mule-cmds.el: Hash the result of mswindows-get-language-environment-from-locale, since it's very expensive (and causes huge ballooning of memory under X Windows, since it's called from x-get-resource). cl-extra.el, code-files.el, files.el, simple.el, subr.el, x-faces.el: Create new string-equal-ignore-case, based on built-in compare-strings -- compare strings ignoring case without the need to generate garbage by calling downcase. Use it in equalp and elsewhere. alloc.c, bytecode.c, chartab.c, data.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-unixoid.c, extents.c, file-coding.c, fileio.c, fns.c, glyphs.c, gutter.c, lisp-union.h, lisp.h, mule-charset.c, nt.c, process-unix.c, process.c, specifier.c, symbols.c, sysdep.c, sysdep.h, text.c, toolbar.c: Try to implement GC triggering based on percentage of total memory usage. Not currently activated (percentage set to 0) because not quite working. Add `memory-usage' primitive to return XEmacs' idea of its memory usage. Add primitive compare-strings, compatible with FSF 21.1 -- can compare any part of two strings, optionally ignoring case. Improve qxe() functions in text.c for text comparison. Use RETURN_NOT_REACHED to try to avoid warnings about unreachable code. Add volatile_make_int() to fix warning in unix_send_process().
author ben
date Mon, 01 Apr 2002 03:59:04 +0000
parents a5954632b187
children 19dfb459d51a
comparison
equal deleted inserted replaced
800:a5954632b187 801:2b676dc88c66
199 #endif 199 #endif
200 200
201 #ifndef DOESNT_RETURN 201 #ifndef DOESNT_RETURN
202 # if defined __GNUC__ 202 # if defined __GNUC__
203 # if ((__GNUC__ > 2) || (__GNUC__ == 2) && (__GNUC_MINOR__ >= 5)) 203 # if ((__GNUC__ > 2) || (__GNUC__ == 2) && (__GNUC_MINOR__ >= 5))
204 # define RETURN_NOT_REACHED(value)
204 # define DOESNT_RETURN void 205 # define DOESNT_RETURN void
205 # define DECLARE_DOESNT_RETURN(decl) \ 206 # define DECLARE_DOESNT_RETURN(decl) \
206 extern void decl __attribute__ ((noreturn)) 207 extern void decl __attribute__ ((noreturn))
207 # define DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS(decl,str,idx) \ 208 # define DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS(decl,str,idx) \
208 /* Should be able to state multiple independent __attribute__s, but \ 209 /* Should be able to state multiple independent __attribute__s, but \
227 /* "end-of-loop code not reached" */ 228 /* "end-of-loop code not reached" */
228 /* "statement not reached */ 229 /* "statement not reached */
229 #if defined __SUNPRO_C || defined __USLC__ 230 #if defined __SUNPRO_C || defined __USLC__
230 #define RETURN_SANS_WARNINGS if (1) return 231 #define RETURN_SANS_WARNINGS if (1) return
231 #define RETURN_NOT_REACHED(value) 232 #define RETURN_NOT_REACHED(value)
232 #else 233 #endif
234
235 #ifndef RETURN_NOT_REACHED
236 #define RETURN_NOT_REACHED(value) return value;
237 #endif
238
239 #ifndef RETURN_SANS_WARNINGS
233 #define RETURN_SANS_WARNINGS return 240 #define RETURN_SANS_WARNINGS return
234 #define RETURN_NOT_REACHED(value) return value;
235 #endif 241 #endif
236 242
237 #ifndef DO_NOTHING 243 #ifndef DO_NOTHING
238 #define DO_NOTHING do {} while (0) 244 #define DO_NOTHING do {} while (0)
239 #endif 245 #endif
2298 2304
2299 2305
2300 /************************************************************************/ 2306 /************************************************************************/
2301 /* Garbage collection / GC-protection */ 2307 /* Garbage collection / GC-protection */
2302 /************************************************************************/ 2308 /************************************************************************/
2303
2304 /* number of bytes of structure consed since last GC */
2305
2306 extern EMACS_INT consing_since_gc;
2307
2308 /* threshold for doing another gc */
2309
2310 extern Fixnum gc_cons_threshold;
2311 2309
2312 /* Structure for recording stack slots that need marking */ 2310 /* Structure for recording stack slots that need marking */
2313 2311
2314 /* This is a chain of structures, each of which points at a Lisp_Object 2312 /* This is a chain of structures, each of which points at a Lisp_Object
2315 variable whose value should be marked in garbage collection. 2313 variable whose value should be marked in garbage collection.
2696 void mark_conses_in_list (Lisp_Object); 2694 void mark_conses_in_list (Lisp_Object);
2697 void free_marker (Lisp_Marker *); 2695 void free_marker (Lisp_Marker *);
2698 int object_dead_p (Lisp_Object); 2696 int object_dead_p (Lisp_Object);
2699 void mark_object (Lisp_Object obj); 2697 void mark_object (Lisp_Object obj);
2700 int marked_p (Lisp_Object obj); 2698 int marked_p (Lisp_Object obj);
2699 int need_to_garbage_collect (void);
2701 2700
2702 #ifdef MEMORY_USAGE_STATS 2701 #ifdef MEMORY_USAGE_STATS
2703 Bytecount malloced_storage_size (void *, Bytecount, struct overhead_stats *); 2702 Bytecount malloced_storage_size (void *, Bytecount, struct overhead_stats *);
2704 Bytecount fixed_type_block_overhead (Bytecount); 2703 Bytecount fixed_type_block_overhead (Bytecount);
2705 #endif 2704 #endif
3205 int, Error_Behavior); 3204 int, Error_Behavior);
3206 void external_plist_put (Lisp_Object *, Lisp_Object, 3205 void external_plist_put (Lisp_Object *, Lisp_Object,
3207 Lisp_Object, int, Error_Behavior); 3206 Lisp_Object, int, Error_Behavior);
3208 int external_remprop (Lisp_Object *, Lisp_Object, int, Error_Behavior); 3207 int external_remprop (Lisp_Object *, Lisp_Object, int, Error_Behavior);
3209 int internal_equal (Lisp_Object, Lisp_Object, int); 3208 int internal_equal (Lisp_Object, Lisp_Object, int);
3209 int internal_equalp (Lisp_Object obj1, Lisp_Object obj2, int depth);
3210 Lisp_Object concat2 (Lisp_Object, Lisp_Object); 3210 Lisp_Object concat2 (Lisp_Object, Lisp_Object);
3211 Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object); 3211 Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object);
3212 Lisp_Object vconcat2 (Lisp_Object, Lisp_Object); 3212 Lisp_Object vconcat2 (Lisp_Object, Lisp_Object);
3213 Lisp_Object vconcat3 (Lisp_Object, Lisp_Object, Lisp_Object); 3213 Lisp_Object vconcat3 (Lisp_Object, Lisp_Object, Lisp_Object);
3214 Lisp_Object nconc2 (Lisp_Object, Lisp_Object); 3214 Lisp_Object nconc2 (Lisp_Object, Lisp_Object);
3757 int qxestrncasecmp_c (const Intbyte *s1, const Char_ASCII *s2, Bytecount len); 3757 int qxestrncasecmp_c (const Intbyte *s1, const Char_ASCII *s2, Bytecount len);
3758 int qxestrncasecmp_i18n (const Intbyte *s1, const Intbyte *s2, Bytecount len); 3758 int qxestrncasecmp_i18n (const Intbyte *s1, const Intbyte *s2, Bytecount len);
3759 int ascii_strncasecmp (const Char_ASCII *s1, const Char_ASCII *s2, 3759 int ascii_strncasecmp (const Char_ASCII *s1, const Char_ASCII *s2,
3760 Bytecount len); 3760 Bytecount len);
3761 int qxememcmp (const Intbyte *s1, const Intbyte *s2, Bytecount len); 3761 int qxememcmp (const Intbyte *s1, const Intbyte *s2, Bytecount len);
3762 int qxememcmp4 (const Intbyte *s1, Bytecount len1,
3763 const Intbyte *s2, Bytecount len2);
3762 int qxememcasecmp (const Intbyte *s1, const Intbyte *s2, Bytecount len); 3764 int qxememcasecmp (const Intbyte *s1, const Intbyte *s2, Bytecount len);
3763 int qxememcasecmp_i18n (const Intbyte *s1, const Intbyte *s2, Bytecount len); 3765 int qxememcasecmp4 (const Intbyte *s1, Bytecount len1,
3766 const Intbyte *s2, Bytecount len2);
3767 int qxetextcmp (const Intbyte *s1, Bytecount len1,
3768 const Intbyte *s2, Bytecount len2);
3769 int qxetextcmp_matching (const Intbyte *s1, Bytecount len1,
3770 const Intbyte *s2, Bytecount len2,
3771 Charcount *matching);
3772 int qxetextcasecmp (const Intbyte *s1, Bytecount len1,
3773 const Intbyte *s2, Bytecount len2);
3774 int qxetextcasecmp_matching (const Intbyte *s1, Bytecount len1,
3775 const Intbyte *s2, Bytecount len2,
3776 Charcount *matching);
3764 3777
3765 void buffer_mule_signal_inserted_region (struct buffer *buf, Charbpos start, 3778 void buffer_mule_signal_inserted_region (struct buffer *buf, Charbpos start,
3766 Bytecount bytelength, 3779 Bytecount bytelength,
3767 Charcount charlength); 3780 Charcount charlength);
3768 void buffer_mule_signal_deleted_region (struct buffer *buf, Charbpos start, 3781 void buffer_mule_signal_deleted_region (struct buffer *buf, Charbpos start,