]> code.delx.au - gnu-emacs/blobdiff - src/alloc.c
(is_simple_dialog, simple_dialog_show): New functions.
[gnu-emacs] / src / alloc.c
index 88f37ee363cffa4dc062eafc51709aa732b7c2ad..fe37eec93793d6099b1f5a8b21b11e39e207cdd9 100644 (file)
@@ -1,6 +1,7 @@
 /* Storage allocation and gc for GNU Emacs Lisp interpreter.
    Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
-      2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
+      2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+      Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -352,8 +353,6 @@ static void mark_face_cache P_ ((struct face_cache *));
 
 #ifdef HAVE_WINDOW_SYSTEM
 extern void mark_fringe_data P_ ((void));
-static void mark_image P_ ((struct image *));
-static void mark_image_cache P_ ((struct frame *));
 #endif /* HAVE_WINDOW_SYSTEM */
 
 static struct Lisp_String *allocate_string P_ ((void));
@@ -1927,11 +1926,7 @@ allocate_string ()
   consing_since_gc += sizeof *s;
 
 #ifdef GC_CHECK_STRING_BYTES
-  if (!noninteractive
-#ifdef MAC_OS8
-      && current_sblock
-#endif
-     )
+  if (!noninteractive)
     {
       if (++check_string_bytes_count == 200)
        {
@@ -5327,34 +5322,6 @@ mark_face_cache (c)
 }
 
 
-#ifdef HAVE_WINDOW_SYSTEM
-
-/* Mark Lisp objects in image IMG.  */
-
-static void
-mark_image (img)
-     struct image *img;
-{
-  mark_object (img->spec);
-
-  if (!NILP (img->data.lisp_val))
-    mark_object (img->data.lisp_val);
-}
-
-
-/* Mark Lisp objects in image cache of frame F.  It's done this way so
-   that we don't have to include xterm.h here.  */
-
-static void
-mark_image_cache (f)
-     struct frame *f;
-{
-  forall_images_in_image_cache (f, mark_image);
-}
-
-#endif /* HAVE_X_WINDOWS */
-
-
 \f
 /* Mark reference to a Lisp_Object.
    If the object referred to has not been seen yet, recursively mark
@@ -5523,12 +5490,7 @@ mark_object (arg)
        {
          register struct frame *ptr = XFRAME (obj);
          if (mark_vectorlike (XVECTOR (obj)))
-           {
-             mark_face_cache (ptr->face_cache);
-#ifdef HAVE_WINDOW_SYSTEM
-             mark_image_cache (ptr);
-#endif /* HAVE_WINDOW_SYSTEM */
-           }
+           mark_face_cache (ptr->face_cache);
        }
       else if (WINDOWP (obj))
        {
@@ -5738,6 +5700,8 @@ mark_buffer (buf)
       mark_object (tmp);
     }
 
+  /* buffer-local Lisp variables start at `undo_list',
+     tho only the ones from `name' on are GC'd normally.  */
   for (ptr = &buffer->name;
        (char *)ptr < (char *)buffer + sizeof (struct buffer);
        ptr++)
@@ -5761,6 +5725,9 @@ mark_terminals (void)
   for (t = terminal_list; t; t = t->next_terminal)
     {
       eassert (t->name != NULL);
+#ifdef HAVE_WINDOW_SYSTEM
+      mark_image_cache (t->image_cache);
+#endif /* HAVE_WINDOW_SYSTEM */
       mark_vectorlike ((struct Lisp_Vector *)t);
     }
 }