comparison src/xgccache.c @ 2500:3d8143fc88e1

[xemacs-hg @ 2005-01-24 23:33:30 by ben] get working with VC7 config.inc.samp: Declare OPTIONAL_LIBRARY_DIR as root of library directories. Redo all graphics library defaults to mirror the versions and directories in the current binary aux distribution on xemacs web site. Enable TIFF and COMPFACE by default since you can now compile with them and binary libs are provided. xemacs.mak: Put our own directories first in case of conflict (e.g. config.h in compface). xemacs.mak: Use MSVCRT to avoid link problems. s/windowsnt.h: bytecode.c, print.c: Add casts to avoid warning. compiler.h: Add MSC_VERSION and include definitions of DOESNT_RETURN and friends here, like for GCC. Need different definitions for VC7 and VC6. s/windowsnt.h: Remove stuff moved to compiler.h. Disable warning 4646 ("function declared with __declspec(noreturn) has non-void return type") on VC7 since lots of Lisp primitives trigger this and there is no easy way to kludge around the warning. glyphs-eimage.c: Some really nasty hacks to allow TIFF and JPEG to both be compiled. #### The better solution is to move the TIFF and JPEG code to different files. glyphs-msw.c: Define __STDC__ to avoid problems with compface.h. intl-auto-encap-win32.c, intl-auto-encap-win32.h, intl-encap-win32.c, syswindows.h: Those wankers at Microsoft cannot leave well enough alone. Various functions change parameter types semi-randomly between VC6 and VC7, so we need to include our own versions that can handle both kinds with appropriate casting. EmacsFrame.c, EmacsShell-sub.c, EmacsShell.c, alloc.c, alloca.c, buffer.c, bytecode.c, charset.h, chartab.c, cm.c, console-stream.c, console.c, data.c, debug.h, device-msw.c, device-tty.c, device-x.c, doprnt.c, dumper.c, dynarr.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, fileio.c, fns.c, font-lock.c, frame-gtk.c, frame-x.c, frame.c, free-hook.c, gccache-gtk.c, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-x.c, glyphs.c, gtk-glue.c, gutter.c, input-method-xlib.c, insdel.c, intl-win32.c, keymap.c, lisp.h, lread.c, lstream.c, macros.c, malloc.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, mule-coding.c, native-gtk-toolbar.c, number.c, objects-msw.c, objects.c, print.c, process-nt.c, process-unix.c, process.c, ralloc.c, rangetab.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, regex.c, scrollbar-gtk.c, scrollbar-x.c, search.c, select-x.c, signal.c, specifier.c, specifier.h, strftime.c, sunplay.c, symbols.c, sysdep.c, sysproc.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, ui-gtk.c, unexnt.c, unicode.c, win32.c, window.c, xgccache.c, s/windowsnt.h: abort() -> ABORT(). Eliminate preprocessor games with abort() since it creates huge problems in VC7, solvable only by including massive amounts of files in every compile (and not worth it).
author ben
date Mon, 24 Jan 2005 23:34:34 +0000
parents ecf1ebac70d8
children de9952d2ed18
comparison
equal deleted inserted replaced
2499:4c5ee4d2e921 2500:3d8143fc88e1
156 gc_cache_lookup (struct gc_cache *cache, XGCValues *gcv, unsigned long mask) 156 gc_cache_lookup (struct gc_cache *cache, XGCValues *gcv, unsigned long mask)
157 { 157 {
158 struct gc_cache_cell *cell, *next, *prev; 158 struct gc_cache_cell *cell, *next, *prev;
159 struct gcv_and_mask gcvm; 159 struct gcv_and_mask gcvm;
160 160
161 if ((!!cache->head) != (!!cache->tail)) abort (); 161 if ((!!cache->head) != (!!cache->tail)) ABORT ();
162 if (cache->head && (cache->head->prev || cache->tail->next)) abort (); 162 if (cache->head && (cache->head->prev || cache->tail->next)) ABORT ();
163 163
164 gcvm.mask = mask; 164 gcvm.mask = mask;
165 gcvm.gcv = *gcv; /* this copies... */ 165 gcvm.gcv = *gcv; /* this copies... */
166 166
167 #ifdef GCCACHE_HASH 167 #ifdef GCCACHE_HASH
206 if (cache->head == cell) cache->head = next; 206 if (cache->head == cell) cache->head = next;
207 cell->next = 0; 207 cell->next = 0;
208 cell->prev = cache->tail; 208 cell->prev = cache->tail;
209 cache->tail->next = cell; 209 cache->tail->next = cell;
210 cache->tail = cell; 210 cache->tail = cell;
211 if (cache->head == cell) abort (); 211 if (cache->head == cell) ABORT ();
212 if (cell->next) abort (); 212 if (cell->next) ABORT ();
213 if (cache->head->prev) abort (); 213 if (cache->head->prev) ABORT ();
214 if (cache->tail->next) abort (); 214 if (cache->tail->next) ABORT ();
215 return cell->gc; 215 return cell->gc;
216 } 216 }
217 217
218 /* else, cache miss. */ 218 /* else, cache miss. */
219 219
231 #ifdef GCCACHE_HASH 231 #ifdef GCCACHE_HASH
232 remhash (&cell->gcvm, cache->table); 232 remhash (&cell->gcvm, cache->table);
233 #endif 233 #endif
234 } 234 }
235 else if (cache->size > GC_CACHE_SIZE) 235 else if (cache->size > GC_CACHE_SIZE)
236 abort (); 236 ABORT ();
237 else 237 else
238 { 238 {
239 /* Allocate a new cell (don't put it in the list or table yet). */ 239 /* Allocate a new cell (don't put it in the list or table yet). */
240 cell = xnew (struct gc_cache_cell); 240 cell = xnew (struct gc_cache_cell);
241 cache->size++; 241 cache->size++;