comparison src/eval.c @ 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
29 #include "backtrace.h" 29 #include "backtrace.h"
30 #include "bytecode.h" 30 #include "bytecode.h"
31 #include "buffer.h" 31 #include "buffer.h"
32 #include "console.h" 32 #include "console.h"
33 #include "opaque.h" 33 #include "opaque.h"
34
35 #ifdef ERROR_CHECK_GC
36 int always_gc; /* Debugging hack */
37 #else
38 #define always_gc 0
39 #endif
40 34
41 struct backtrace *backtrace_list; 35 struct backtrace *backtrace_list;
42 36
43 /* Note: you must always fill in all of the fields in a backtrace structure 37 /* Note: you must always fill in all of the fields in a backtrace structure
44 before pushing them on the backtrace_list. The profiling code depends 38 before pushing them on the backtrace_list. The profiling code depends
3211 else 3205 else
3212 return form; 3206 return form;
3213 } 3207 }
3214 3208
3215 QUIT; 3209 QUIT;
3216 if ((consing_since_gc > gc_cons_threshold) || always_gc) 3210 if (need_to_garbage_collect ())
3217 { 3211 {
3218 struct gcpro gcpro1; 3212 struct gcpro gcpro1;
3219 GCPRO1 (form); 3213 GCPRO1 (form);
3220 garbage_collect_1 (); 3214 garbage_collect_1 ();
3221 UNGCPRO; 3215 UNGCPRO;
3435 struct backtrace backtrace; 3429 struct backtrace backtrace;
3436 int fun_nargs = nargs - 1; 3430 int fun_nargs = nargs - 1;
3437 Lisp_Object *fun_args = args + 1; 3431 Lisp_Object *fun_args = args + 1;
3438 3432
3439 QUIT; 3433 QUIT;
3440 if ((consing_since_gc > gc_cons_threshold) || always_gc) 3434 if (need_to_garbage_collect ())
3441 /* Callers should gcpro lexpr args */ 3435 /* Callers should gcpro lexpr args */
3442 garbage_collect_1 (); 3436 garbage_collect_1 ();
3443 3437
3444 if (++lisp_eval_depth > max_lisp_eval_depth) 3438 if (++lisp_eval_depth > max_lisp_eval_depth)
3445 { 3439 {