emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r109917: * alloc.c (mark_buffer): Rev


From: Dmitry Antipov
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r109917: * alloc.c (mark_buffer): Revert unsafe marking optimization.
Date: Fri, 07 Sep 2012 11:05:56 +0400
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 109917
committer: Dmitry Antipov <address@hidden>
branch nick: trunk
timestamp: Fri 2012-09-07 11:05:56 +0400
message:
  * alloc.c (mark_buffer): Revert unsafe marking optimization.
  (mark_object): Likewise for frame objects.
modified:
  src/ChangeLog
  src/alloc.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-09-07 06:47:30 +0000
+++ b/src/ChangeLog     2012-09-07 07:05:56 +0000
@@ -1,3 +1,8 @@
+2012-09-07  Dmitry Antipov  <address@hidden>
+
+       * alloc.c (mark_buffer): Revert unsafe marking optimization.
+       (mark_object): Likewise for frame objects.
+
 2012-09-07  Paul Eggert  <address@hidden>
 
        * syssignal.h (handle_on_main_thread): Always declare,

=== modified file 'src/alloc.c'
--- a/src/alloc.c       2012-09-07 01:27:44 +0000
+++ b/src/alloc.c       2012-09-07 07:05:56 +0000
@@ -5842,29 +5842,23 @@
 static void
 mark_buffer (struct buffer *buffer)
 {
-  if (NILP (BVAR (buffer, name)))
-    /* If the buffer is killed, mark just the buffer itself.  */
-    VECTOR_MARK (buffer);
-  else
-    {
-      /* This is handled much like other pseudovectors...  */
-      mark_vectorlike ((struct Lisp_Vector *) buffer);
-
-      /* ...but there are some buffer-specific things.  */
-
-      MARK_INTERVAL_TREE (buffer_intervals (buffer));
-
-      /* For now, we just don't mark the undo_list.  It's done later in
-        a special way just before the sweep phase, and after stripping
-        some of its elements that are not needed any more.  */
-
-      mark_overlay (buffer->overlays_before);
-      mark_overlay (buffer->overlays_after);
-
-      /* If this is an indirect buffer, mark its base buffer.  */
-      if (buffer->base_buffer && !VECTOR_MARKED_P (buffer->base_buffer))
-       mark_buffer (buffer->base_buffer);
-    }
+  /* This is handled much like other pseudovectors...  */
+  mark_vectorlike ((struct Lisp_Vector *) buffer);
+
+  /* ...but there are some buffer-specific things.  */
+
+  MARK_INTERVAL_TREE (buffer_intervals (buffer));
+
+  /* For now, we just don't mark the undo_list.  It's done later in
+     a special way just before the sweep phase, and after stripping
+     some of its elements that are not needed any more.  */
+
+  mark_overlay (buffer->overlays_before);
+  mark_overlay (buffer->overlays_after);
+
+  /* If this is an indirect buffer, mark its base buffer.  */
+  if (buffer->base_buffer && !VECTOR_MARKED_P (buffer->base_buffer))
+    mark_buffer (buffer->base_buffer);
 }
 
 /* Determine type of generic Lisp_Object and mark it accordingly.  */
@@ -6003,26 +5997,14 @@
            break;
 
          case PVEC_FRAME:
-           {
-             struct frame *f = (struct frame *) ptr;
-
-             if (FRAME_LIVE_P (f))
-               {
-                 mark_vectorlike (ptr);
-                 mark_face_cache (f->face_cache);
-               }
-             else
-               /* If the frame is deleted, mark just the frame itself.  */
-               VECTOR_MARK (ptr);
-           }
+           mark_vectorlike (ptr);
+           mark_face_cache (((struct frame *) ptr)->face_cache);
            break;
 
          case PVEC_WINDOW:
            {
              struct window *w = (struct window *) ptr;
-             
-             /* Even if the window is deleted, we can't mark just the window
-                itself because set-window-configuration can resurrect it.  */
+
              mark_vectorlike (ptr);
              /* Mark glyphs for leaf windows.  Marking window
                 matrices is sufficient because frame matrices


reply via email to

[Prev in Thread] Current Thread [Next in Thread]